【OpenCV入门指南】第七篇 线段检测与圆检测

本文是《OpenCV入门指南》第七篇,介绍了如何使用OpenCV的Hough变换进行线段检测和圆检测。讲解了cvHoughLines2和cvHoughCircles函数的参数及工作原理,并提供了示例代码,展示了线段和圆的检测结果。
摘要由CSDN通过智能技术生成
               

【OpenCV入门指南】第七篇 线段检测与圆检测

在《【OpenCV入门指南】第五篇轮廓检测上》与《【OpenCV入门指南】第六篇轮廓检测下》讲解了OpenCV的轮廓检测。本篇将讲解在OpenCV中使用线段检测与圆检测。

线段检测与圆检测主要运用Hough变换,Hough变换是一种利用图像的全局特征将特定形状的边缘连接起来,形成连续平滑边缘的一种方法。它通过将源图像上的点影射到用于累加的参数空间,实现对已知解析式曲线进行识别。

在OpenCV编程中,线段检测和圆检测已经封装成函数了,直接使用cvHoughLines2和cvHoughCircles即可,下面来看看函数介绍和实际代码。

《OpenCV入门指南》系列文章地址:http://blog.csdn.net/morewindows/article/category/863841

 

函数功能:检测图像中的线段

函数原型:

CvSeq* cvHoughLines2(

  CvArr* image,

  void* line_storage,

  int method,

  double rho,

  double theta,

  int threshold,

  double param1=0, double param2=0

);

参数说明:

第一个参数表示输入图像,必须为二值图像(黑白图)。

第二个参数表示存储容器,和上一篇的轮廓检测一样,可以传入CvMemStorage类型的指针。

第三个参数表示变换变量,可以取下面的值:

  CV_HOUGH_STANDARD - 传统或标准 Hough 变换. 每一个线段由两个浮点数 (ρ, θ) 表示,其中 ρ 是线段与原点 (0,0) 之间的距离,θ 线段与 x-轴之间的夹角。

  CV_HOUGH_PROBABILISTIC - 概率 Hough 变换(如果图像包含一些长的线性分割,则效率更高)。它返回线段分割而不是整个线段。每个分割用起点和终点来表示。

  CV_HOUGH_MULTI_SCALE - 传统 Hough 变换的多尺度变种。线段的编码方式与 CV_HOUGH_STANDARD 的一致。

第四个参数表示与象素相关单位的距离精度。

第五个参数表示弧度测量的角度精度。

第六个参数表示检测线段的最大条数,如果已经检测这么多条线段,函数返回。

第七个参数与第三个参数有关,其意义如下:

  对传统 Hough 变换,不使用(0).

  对概率 Hough 变换,它是最小线段长度.

  对多尺度 Hough 变换,它是距离精度 rho 的分母 (大致的距离精度是 rho 而精确的应该是 rho / param1 ).

第八个参数与第三个参数有关,其意义如下:

  对传统 Hough 变换,不使用 (0).

  对概率 Hough 变换,这个参数表示在同一条线段上进行碎线段连接的最大间隔值(gap), 即当同一条线段上的两条碎线段之间的间隔小于param2时,将其合二为一。

  对多尺度 Hough 变换,它是角度精度 theta 的分母 (大致的角度精度是 theta 而精确的角度应该是 theta / param2).

 

线段检测的原理还是有点复杂,有兴趣请阅读专业书籍,下面给一个份示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值