我正在做一个边缘检测/画线视觉项目(使用 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])
现在,当我回去打印并显示这些语句的结果时......我没有得到线条上的点......给出了什么?