设为首页 加入收藏

TOP

OpenCV之图像轮廓检测及提取
2015-02-02 14:11:37 来源: 作者: 【 】 浏览:17
Tags:OpenCV 图像 轮廓 检测 提取

OpenCV代码功能:检测并画出图像中的轮廓


主要函数:cvFindContours、cvDrawContours


#include
#include
#include
#include


void main()
{
? ? int i=0;
? ? int mode=CV_RETR_CCOMP;? ? ? ? ? //the mode of contours
? ? int num_contours=0;
? ? CvScalar ext_color,inn_color;
? ?
? ? CvMemStorage*storage=cvCreateMemStorage(0);
? ? CvSeq*contour=0;


? ? IplImage*pimg=NULL;
? ? IplImage*CTImg=NULL;
? ? IplImage*src=cvLoadImage("test.bmp",-1);


? ? pimg=cvCreateImage(cvGetSize(src),src->depth,1);
? ? CTImg=cvCreateImage(cvGetSize(pimg),IPL_DEPTH_8U,3);
? ? cvCvtColor(src,pimg,CV_BGR2GRAY);


? ? cvNamedWindow("source",CV_WINDOW_AUTOSIZE);
? ? cvNamedWindow("gray",CV_WINDOW_AUTOSIZE);
? ? cvNamedWindow("contours",CV_WINDOW_AUTOSIZE);


? ? cvShowImage("source",src);
? ? //cvThreshold(pimg,pimg,200,250,CV_THRESH_BINARY);
? ? cvErode(pimg,pimg,0,1);
? ? cvDilate(pimg,pimg,0,1);
? ? cvCanny(pimg,pimg,2,20,3);
? ? //cvErode(pimg,pimg,0,2);
? ? //cvDilate(pimg,pimg,0,1);
? ? //Find the Contours
? ? mode=CV_RETR_LIST;
? ? num_contours=cvFindContours(pimg,storage,&contour,sizeof(CvContour),mode,CV_CHAIN_APPROX_NONE);
? ? cout<<"The number of the contours is :"<? ? //Draw the Contours
? ? for (;contour!=0;contour=contour->h_next)
? ? {
? ? ? ? inn_color=CV_RGB(rand()&255,rand()&255,rand()&255);
? ? ? ? ext_color=CV_RGB(rand()&255,rand()&255,rand()&255);
? ? ? ? cvDrawContours(CTImg,contour,ext_color,inn_color,1,2,8,cvPoint(0,0));
? ? }


? ? cvShowImage("gray",pimg);
? ? cvShowImage("contours",CTImg);
? ? cvWaitKey(0);
? ? cvSaveImage("Contours.bmp",CTImg);
? ? cvSaveImage("Canny.bmp",pimg);


? ? cvReleaseImage(&pimg);
? ? cvReleaseImage(&CTImg);
? ? cvReleaseImage(&src);
? ? cvReleaseMemStorage(&storage);


? ? cvDestroyAllWindows();


}


效果图:


? ?


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[C++]二维数组还是一维数组? 下一篇C++2015前瞻

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: