基础学习笔记之连通域处理函数.doc

基础学习笔记之连通域处理函数.doc

ID:51298394

大小:188.00 KB

页数:8页

时间:2020-03-21

基础学习笔记之连通域处理函数.doc_第1页
基础学习笔记之连通域处理函数.doc_第2页
基础学习笔记之连通域处理函数.doc_第3页
基础学习笔记之连通域处理函数.doc_第4页
基础学习笔记之连通域处理函数.doc_第5页
资源描述:

《基础学习笔记之连通域处理函数.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、在图像处理过程屮,经常会遇到这样一部分图像,图像的整体部分如果人來看的话•眼就能看出,但是它的内部山于有各种小缺口,导致断开了,这样在计算机“眼”里就被认为是断开的,为了使图像达到适应人眼的感觉,需要将这些缺口和断开的口给连接上去,这就需要用到计算机图形学屮的连通域处理技术。本文给出一个简单的连通域处理函数,当然这个函数是來QOpenCV著名教程LearningOpenCV«

2、',只不过它的接口是基于c版本的0penCV,而到目前为止,基于C++接口的OpenCV己经是主流,所以我将其接口改成了C++版的,但是其内部一些代码基本没有动它。开发环境:OpenCV2.

3、4.3+QtCreator2.5.1实验基础疔先來看这个连通域处理函数的形式:voidConnectedComponents(Mat&mask_process,intpoly1_hullO,floatperimScale,intnumber=0,Rect&bounding_box=Rect(),Point&contour_centers=Point(-1,-1));参数mask表示的是需要进行连通域处理二值图像。参数poly1_hullO农示轮廓边缘是否采用多边形拟合,如果该参数为1,则表示采用多边形拟合,否则采用凸包拟合。参数perimScale是用來将那些小的

4、轮廉去掉,那些小的轮嘲时指它的周长小于(mask长+宽)/perimScale。当然你在其内部代码也可以该为面积來判断。参数num表示实际需要处理最多的轮廓的个数(如果输入的mask有多个轮廓的话),这里的处理是指计算出这些轮廓的外接矩形和屮心点。默认值为0,表示函数内部不需要处理这些外接炖形和中心点。参数bbs表示的杲处理完后对应轮廓的外接矩形,默认值为Rect(),表示不需要返冋这些外接矩形。参数centers农示处理完后对应轮廓的屮心点坐标,默认值为Point(-1,-1),表示不需要返冋这些中心点。C/C++知识点总结:如果…韭函数需要默认值的话,町以玄接

5、在函数定义的时候抬定,该指定并不…定是具体的某个值,也可以是空值等等。另外在函数内部实现时,有时候要注意默认值的特殊性。实验结果所需处理原始图像的灰度图:src口回冈其対应的mask图像:口叵]冈Bask使川多项式拟合的连通域处理后图像:使川凸包集拟合的连通域处理后的图像:实验代码及注释(附录有工程code下载地址):main.cpp:#include#includeusingnamespacecv;usingnamespacestd;//Justsomeconvieniencemacros#defineCV_CVX_W

6、HITECV_RGB(OxfffOxfffOxff)#defineCV_CVX_BLACKCV_RGB(0x00,0x00,0x00)voidConnectedComponents(Mat&mask_process,intpolyl_hull0zfloatperimScale,intnumber=0,Rect&bounding_box=Rect(),Point&contourcenters=Point(-1,-1))"下面4句代码是为了兼容原函数接口,即内部使用的是c风格,但是其接口是C++风格的決/IplImage*mask=&mask_process.oper

7、atorIpllmage();int*num=&number;CvRect*bbs=&bounding_box.operatorCvRect();CvPoint*centers=&contour_centers.operatorCvPoint();staticCvMemStorage*mem_storage=NULL;staticCvSeq*contours=NULL;//CLEANUPRAWMASK//开运算作用:平滑轮廓,去掉细节,断开缺口cvMorphologyEx(mask,mask,NULL,NULL,CV_MOP_OPENz1);//对输入mask进行

8、开操作,CVCLOSE_ITR为开操作的次数,输出为mask图像//闭运算作用:平滑轮廓,连接缺口cvMorphologyEx(mask,mask,NULL,NULL,CV_MOP_CLOSEz1);//对输入mask进行闭操作,CVCLOSE_ITR为闭操作的次数,输出为mask图像//FINDCONTOURSAROUNDONLYBIGGERREGIONSif(mem_storage==NULL)mem_storage=cvCreateMemStorage(0);elsecvClearMemStorage(mem_storage);//CV_RETR_EXTER

9、NAL=0

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

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

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