我正在进行边缘检测/线条绘制视觉项目(使用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阵列。但是,如何确定图像中的哪些点对应于阵列中的哪些元素? 有没有办法将'line'中的元素与图像上的像素相关联?
谢谢!
编辑:
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])
现在,当我回去打印并显示这些陈述的结果时......我不明白这些点......是什么给出的?