官网参见 https://docs.opencv.org/3.4.1/d6/d10/tutorial_py_houghlines.html
以前自己也了解过了,https://blog.csdn.net/weixin_42555985/article/details/93467432
这里为了确保资料完成性,就按照官网内容再了解一下。
霍夫曼变换 是一种用来检测任何形状的通用技术,只要这个形状可以用数学公式表示就行。即使形状是有一点破损的,或者扭曲的,也可以用霍夫曼变换来检测出。
直线可以用y=mx+c 表示,也可以用极坐标形式ρ=xcosθ+ysinθ表示,其中ρ是从原点到直线的垂直距离,θ是直线的垂线和水平轴形成的逆时针夹角(这里描述的是opencv中的定义,参见下图)。
如果直线从原点下方经过,ρ>0,θ<180度
如果直线从原点上方经过,ρ<0,θ<180度
垂直线,θ=0。水平线,θ=90。
现在来看一下霍夫曼直线变换。我们已经知道每条直线可以用(ρ,θ)表示。所以先创建一个二维数组(累加器,保存2个参数的值),把它初始化设置为0。ρ表示行,θ表示列。数组大小取决于所需要的检测精度。假设你需要角度精度为1度,那数组就要180列。对于ρ,最大值就是图像的对角线距离,所以要达到1个像素的精度,那么数组的行数就是图像对角线距离。
假设有一个100*100的图像,有一条水平直线在图像中央。取