Поиск координат линии в HoughLineP() в OpenCV с использованием Python

Я работаю над проектом "Обнаружение краев / рисование линий" (с использованием OpenCV и Python).
Я могу найти края, которые я хочу в изображении, используя cv2.Canny(), и рисовать линии на этих краях, используя HoughLinesP().
Я пытаюсь выяснить, как найти "конечные точки" линий, нарисованных с помощью HoughLinesP (), чтобы я мог сравнить наклоны линий с диапазоном значений (в основном, я пытаюсь увидеть, являются ли эти линии вертикальными - хватит быть "хорошим").
Я немного застрял в поиске точек линий, нарисованных с помощью HoughLinesP().
Мой код, который рисует линии

lines = cv2.HoughLinesP(img, RHO, THETA, minLineLength, maxLineGap)  
a, b, c = lines.shape  
for i in range(a):  
     cv2.line(img, (lines[i][0][0], lines[i][0][1], lines[i][0][2], lines[i][0][3], (0,255,0), 3, cv2.LINE_AA)

Теперь я могу найти "форму" массива, линий, но я не уверен, что означают значения... в основном, куда мне идти дальше?

>>x = lines.shape
>>print(x)

возвращает (1038, 1, 4) .

Я понимаю, что это 3D-массив. Но как мне определить, какие точки на изображении соответствуют каким элементам в массиве?
Есть ли способ соотнести элемент в "линии" с пикселем на изображении?

Спасибо!

РЕДАКТИРОВАТЬ:

print([lines[0]])
возвращает:
[array([[348, 159, 348, 159]])]

Я думаю, что это соответствует точкам (x_start, y_start),(x_end,y_end) одной линии (конкретная точка выше, по-видимому, относится к одной точке, то есть к одинаковым начальным и конечным координатам). Если я все правильно понимаю.

Но, пытаясь найти максимальные координаты x и y ("верх" и "низ" линии), я получаю странные результаты.

Это то, что я делаю:

a,b,c = lines.shape for i in range(a): max_y = np.maximum(lines[i][0][1], lines[i][0][3]) min_y = np.minimum(lines[i][0][1], lines[i][0][3])

Теперь, когда я возвращаюсь, печатаю и показываю результаты этих утверждений... Я не получаю баллов по линиям... что дает?

0 ответов

Другие вопросы по тегам