Так что я пытаюсь получить hough строки на шахматной доске, но алгоритм приводит к обнаружению только одной строки. Я использую python 2.7 и opencv 3.0. Вот код:Opencv: Hough строки не показаны
def applyHoughLineTransform():
image1 = cv2.imread('pictures/board1.png',0)
image2 = cv2.imread('pictures/board2.png',0)
image3 = cv2.imread('pictures/board3.png')
image4 = cv2.imread('pictures/board4.png')
lines1 = cv2.HoughLines(image1,1,math.pi/180.0,5)
lines2 = cv2.HoughLines(image2,1,math.pi/180.0,5)
lines1 = lines1[0]
lines2 = lines2[0]
for rho,theta in lines1:
print ('Rho and theta:',rho,theta)
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
print (x1,y1)
print (x2,y2)
cv2.line(image3,(x1,y1),(x2,y2),(0,0,255),2)
for rho,theta in lines2:
a = np.cos(theta)
b = np.sin(theta)
x0 = a*rho
y0 = b*rho
x1 = int(x0 + 1000*(-b))
y1 = int(y0 + 1000*(a))
x2 = int(x0 - 1000*(-b))
y2 = int(y0 - 1000*(a))
cv2.line(image4,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imwrite('pictures/board1.png',image1)
cv2.imwrite('pictures/board2.png',image2)
cv2.imshow('hough line 1',image3)
cv2.imshow('hough line 2',image4)
Вот хитрый край изображения, на котором я выполнить алгоритм поджилки строки:
И вот результаты:
Как вы можете видеть, довольно хромой , Кажется, что canny алгоритм обеспечивает действительно хорошие края для работы. Я не совсем уверен, что я делаю неправильно. Я полагаю, что это имеет какое-то отношение к аргументам, введенным в функцию houghLines. Если кто-то может указать мне в правильном направлении (или исправить мою проблему полностью :)), я был бы очень признателен. Вот ссылка на сайт учебника, который я использую: http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html
Я не вижу 'Осторожные()' в вашем коде .. –
это в другой функция, и все в моем основном цикле. Канимый образ, над которым я работаю, выше hough, как указано в моем сообщении – user1243