使用Python

时间:2017-04-21 14:43:19

标签: python arrays opencv numpy houghlinesp

我正在进行边缘检测/线条绘制视觉项目(使用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])

现在,当我回去打印并显示这些陈述的结果时......我不明白这些点......是什么给出的?

0 个答案:

没有答案