回答編集履歴

2

 

2023/04/30 08:52

投稿

NICKO
NICKO

スコア62

test CHANGED
@@ -5,7 +5,7 @@
5
5
  import numpy as np
6
6
 
7
7
  # 画像を読み込み
8
- img = cv2.imread('path/to/your/image.jpg')
8
+ img = cv2.imread('')
9
9
 
10
10
  # 画像を平滑化してノイズを除去
11
11
  blur = cv2.GaussianBlur(img, (9, 9), 0)

1

2行目から下記のコメントでご指摘の通り詳しく説明してみました。

2023/04/30 08:51

投稿

NICKO
NICKO

スコア62

test CHANGED
@@ -1 +1,34 @@
1
1
  HoughCirclesを使用してみたらいかがでしょうか。
2
+ 円筒の外形を取得するために、画像処理のアプローチを変更すると良いと思います。
3
+ ```python
4
+ import cv2
5
+ import numpy as np
6
+
7
+ # 画像を読み込み
8
+ img = cv2.imread('path/to/your/image.jpg')
9
+
10
+ # 画像を平滑化してノイズを除去
11
+ blur = cv2.GaussianBlur(img, (9, 9), 0)
12
+
13
+ # グレースケール変換
14
+ gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
15
+
16
+ # 閾値処理
17
+ ret, thresh = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY)
18
+
19
+ # HoughCirclesを使用して円を検出
20
+ circles = cv2.HoughCircles(thresh, cv2.HOUGH_GRADIENT, dp=1, minDist=20,
21
+ param1=50, param2=30, minRadius=10, maxRadius=0)
22
+
23
+ # 検出された円を描画
24
+ if circles is not None:
25
+ circles = np.round(circles[0, :]).astype("int")
26
+
27
+ for (x, y, r) in circles:
28
+ cv2.circle(img, (x, y), r, (0, 255, 0), 2)
29
+
30
+ cv2.imshow('Detected Circles', img)
31
+ cv2.waitKey(0)
32
+ cv2.destroyAllWindows()
33
+ ```
34
+ これを実行すれば円筒の外形を検出できるかと思います。