次の画像を入力画像として金属の部品をハフ変換で輪郭や溝のエッジを抽出したいと思っていますが、パラメータの調整が難しく上手くできません。どうしればよろしいでしょうか
みなさま、間際らしい質問をしてしまい申し訳ございません。私はハフ変換で金属の部品の溝や輪郭の座標を求めたいと思っておりました。jbpb0様から意見で確率的ハフ変換を導入しても綺麗に溝や輪郭の検出ができせん。すいませんがどうすればよいか教えてくれないでしょうか。また入力画像、ハフ変換と確率的ハフ変換の出力画像とソースコードを上げておきます。
]
python
1import cv2 2import numpy as np 3img=cv2.imread('input.jpg') 4gray=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)[:,:,1] 5edges = cv2.Canny(gray,255,0,apertureSize = 3) 6lines = cv2.HoughLines(edges,1,np.pi/180,200) 7print(len(lines)) 8for line in lines: 9 for rho,theta in line: 10 a = np.cos(theta) 11 b = np.sin(theta) 12 x0 = a*rho 13 y0 = b*rho 14 x1 = int(x0 + 1000*(-b)) 15 y1 = int(y0 + 1000*(a)) 16 x2 = int(x0 - 1000*(-b)) 17 y2 = int(y0 - 1000*(a)) 18 cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2) 19 20cv2.imwrite('output.jpg',img)
Python
1import cv2 2import numpy as np 3img = cv2.imread('input.png') 4gray=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)[:,:,1] 5edges = cv2.Canny(gray,50,150,apertureSize = 3) 6minLineLength = 50 7maxLineGap = 10 8lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap) 9for line in lines: 10 for x1,y1,x2,y2 in line: 11 cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2) 12 13 14cv2.imwrite('output.png',img)
回答3件
あなたの回答
tips
プレビュー