当一个给定的带有线的图像被传递到OpenCV的HoughLine变换时,它返回一个rho和theta对的列表,每个对定义一条单独的线。这些线在rho,theta对列表中的排列顺序是什么。在
例如,当这个8行的图像在python中使用时, image with 8 line
接下来,返回八行的θ矩阵。在
[[ 461. 1.48352981]
[ 380. 1.48352981]
[ 212. 1.48352981]
[ 112. 1.48352981]
[ 65. 1.48352981]
[ 334. 1.48352981]
[ 269. 1.48352981]
[ 508. 1.48352981]]
openCV是如何确定这些行在这个矩阵中列出的顺序的?在
来自OpenCV源代码https://github.com/opencv/opencv/blob/master/modules/imgproc/src/hough.cpp
函数houghlinessstandard实现从第80行开始的标准hough变换。在
如果我们再向下滚动一点(第166行),我们会发现:
现在,行列表按累加器值升序排序。并将最好的
^{pr2}$linesMax
结果放入输出缓冲区。在如果您不知道累加器的值是多少,请阅读Hough变换是如何工作的。https://en.wikipedia.org/wiki/Hough_transform
它基本上就是多少像素组成了这个菱形对。在
它们可能以字典(r,Θ)或(Θ,r)顺序返回,因此平行线将通过增加与原点的距离或随机(角度的顺序不可预测)出现。在
函数的设计者没有理由强制执行某个特定的顺序,因为在一般情况下没有任何逻辑线(平行线或准平行线是例外)。在
如果你想要一个特定的命令,那就由你来指定和实现它。例如,通过递增r排序,当Θ转了半圈时,注意分配一个负号。也可以使用垂直线对交点的纵坐标进行排序。在
在小猪发现后,它们被力量送回。我的前一段仍然适用。在
相关问题 更多 >
编程相关推荐