C+OpenCV霍夫变换-直线检测

霍夫变换

霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。

以直线检测为例,每个像素坐标点经过变换都变成都直线特质有贡献的统一度量,一个简单的例子如下:一条直线在图像中是一系列离散点的集合,通过一个直线的离散极坐标公式,可以表达出直线的离散点几何等式如下:

X *cos(theta) + y * sin(theta) = r 其中角度theta指r与X轴之间的夹角,r为到直线几何垂

直距离。任何在直线上点,x, y都可以表达,其中 r, theta是常量。该公式图形表示如下:

下等式:

(x –a ) ^2 + (y-b) ^ 2 = r^2其中(a, b)为圆的中心点坐标,r圆的半径。这样霍夫的参数空间就变成一个三维参数空间。给定圆半径转为二维霍夫参数空间,变换相对简单,也比较常用。

相关API

代码演示

新建一个项目opencv-0017,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

开始做霍夫直接检测的编码

然后我们看看执行后的效果

原图为

获取到canny边缘的图为

可以看到获取到边缘后的我们的方形图实际的直线来说也并非很直。

最后就是我们的画线后的图

可以看到方形边缘有部分是画有绿色的线的,就是我们划出来的检测出的直线效果。

-END-

长按下方二维码关注

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180509G0ZCGH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励