В моем приложении я использую Hough Line Detection для обнаружения линий внутри изображения. То, что я пытаюсь сделать, это извлечь только линии, которые составляют границу и углы каждого квадрата шахматной доски. Как я могу применить фильтры, чтобы получить четкий вид линий?
Моя идея состоит в том, чтобы применить фильтры, чтобы проверить угол между каждой линией (90 градусов) или расстояние, чтобы получить только те линии, которые имеют значение. Конечной целью будет получить пересечение между этими линиями, чтобы получить координаты каждого квадрата.
Код:
chessBoard = cv2.imread('img.png')
gray = cv2.cvtColor(chessBoard,cv2.COLOR_BGR2GRAY)
dst = cv2.Canny(gray, 50, 200)
lines= cv2.HoughLines(dst, 1, math.pi/180.0, 100, np.array([]), 0, 0)
a,b,c = lines.shape
for i in range(a):
rho = lines[i][0][0]
theta = lines[i][0][1]
a = math.cos(theta)
b = math.sin(theta)
x0, y0 = a*rho, b*rho
pt1 = ( int(x0+1000*(-b)), int(y0+1000*(a)) )
pt2 = ( int(x0-1000*(-b)), int(y0-1000*(a)) )
cv2.line(chessBoard, pt1, pt2, (0, 255, 0), 2, cv2.LINE_AA)