将棋盤の黒線の端4点を取りたいと思っています。
元画像(図1)からグレースケール化とcanny edgeを行って画像を出力しうまくいってそう(図2)
なのですが、そのあとハフ変換してもちょうどよく線が引かれません。どうしたら端4点を取ることができるでしょうか?何か方針があれば教えていただきたいです。どんなお答えでも助かりますのでよろしくお願いします。
python
1import cv2 2import numpy as np 3 4img = cv2.imread('ba-n.jpg') 5kernel = np.ones((2, 2), np.uint8) 6 7gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 8edges = cv2.Canny(gray, 1, 100, apertureSize=3) 9cv2.imwrite('houghlines6_edge.jpg', edges) 10 11lines = cv2.HoughLines(edges, 1, np.pi / 180, 200) 12for line in lines: 13 rho, theta = line[0] 14 a = np.cos(theta) 15 b = np.sin(theta) 16 x0 = a * rho 17 y0 = b * rho 18 x1 = int(x0 + 1000 * (-b)) 19 y1 = int(y0 + 1000 * (a)) 20 x2 = int(x0 - 1000 * (-b)) 21 y2 = int(y0 - 1000 * (a)) 22 23 cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2) 24 25cv2.imwrite('houghlines3.jpg', img)

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。