用Hough变换检测直线和圆.doc

用Hough变换检测直线和圆.doc

ID:52722092

大小:139.50 KB

页数:5页

时间:2020-03-30

用Hough变换检测直线和圆.doc_第1页
用Hough变换检测直线和圆.doc_第2页
用Hough变换检测直线和圆.doc_第3页
用Hough变换检测直线和圆.doc_第4页
用Hough变换检测直线和圆.doc_第5页
资源描述:

《用Hough变换检测直线和圆.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、特殊图像变换1、HoughLines功能:利用Hough变换在二值图像中找到直线格式:CvSeq*cvHoughLines2(CvArr*image,void*line_storage,intmethod,b5E2RGbCAPdoublerho,doubletheta,intthreshold,doubleparam1=0,doubleparam2=0>。参数:image:输入8-比特、单通道(二值>图像,其内容可能被函数所改变line_storage:检测到的线段存储仓.可以是内存存储仓(此种情况下,一个线段序列在存储仓中被创建,并且由函数

2、返回),或者是包含线段参数的特殊类型<见下面)的具有单行/单列的矩阵(CvMat*>。矩阵头为函数所修改,使得它的cols/rows将包含一组检测到的线段。如果line_storage是矩阵,而实际线段的数目超过矩阵尺寸,那么最大可能数目的线段被返回(线段没有按照长度、可信度或其它指标排序>.p1EanqFDPwmethod:Hough变换变量,是下面变量的其中之一:·CV_HOUGH_STANDARD-传统或标准Hough变换.每一个线段由两个浮点数 (ρ,θ>表示,其中ρ是点与原点(0,0>之间的距离,θ线段与x-轴之间的夹角。因此,矩阵

3、类型必须是CV_32FC2type.DXDiTa9E3d·CV_HOUGH_PROBABILISTIC-概率Hough变换(如果图像包含一些长的线性分割,则效率更高>.它返回线段分割而不是整个线段。每个分割用起点和终点来表示,所以矩阵<或创建的序列)类型是CV_32SC4.RTCrpUDGiT·CV_HOUGH_MULTI_SCALE-传统Hough变换的多尺度变种。线段的编码方式与CV_HOUGH_STANDARD的一致。5PCzVD7HxArho:与象素相关单位的距离精度theta:弧度测量的角度精度threshold:阈值参数。如果相应

4、的累计值大于threshold,则函数返回的这个线段.param1:第一个方法相关的参数:·对传统Hough变换,不使用(0>.·对概率Hough变换,它是最小线段长度.·对多尺度Hough变换,它是距离精度 rho的分母(大致的距离精度是rho而精确的应该是rho/param1>.jLBHrnAILgparam2:第二个方法相关参数:5/5·对传统Hough变换,不使用(0>.·对概率Hough变换,这个参数表示在同一条直线上进行碎线段连接的最大间隔值(gap>,即当同一条直线上的两条碎线段之间的间隔小于param2时,将其合二为一。xHA

5、QX74J0X·对多尺度Hough变换,它是角度精度theta的分母(大致的角度精度是theta而精确的角度应该是theta/param2>.LDAYtRyKfE函数cvHoughLines2实现了用于线段检测的不同Hough变换方法.Example.用Houghtransform检测线段#include#include#includeintmain(intargc,char**argv>{IplImage*src。if(argc==2&&(src=cvLoadImage(argv[1],0>

6、>!=0>Zzz6ZB2Ltk{IplImage*dst=cvCreateImage(cvGetSize(src>,8,1>。dvzfvkwMI1IplImage*color_dst=cvCreateImage(cvGetSize(src>,8,3>。rqyn14ZNXICvMemStorage*storage=cvCreateMemStorage(0>。CvSeq*lines=0。inti。cvCanny(src,dst,50,200,3>。cvCvtColor(dst,color_dst,CV_GRAY2BGR>。#if1lines=cv

7、HoughLines2(dst,storage,CV_HOUGH_STANDARD,1,CV_PI/180,150,0,0>。EmxvxOtOcofor(i=0。itotal。i++>{float*line=(float*>cvGetSeqElem(lines,i>。floatrho=line[0]。floattheta=line[1]。CvPointpt1,pt2。doublea=cos(theta>,b=sin(theta>。if(fabs(a><0.001>{pt1.x=pt2.x=cvRound(rho>。pt1.y=

8、0。pt2.y=color_dst->height。}elseif(fabs(b><0.001>{pt1.y=pt2.y=cvRound(rho>。pt1.x=0。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。