首页 > 编程知识 正文

opencv轮廓抖动,opencv 人体轮廓

时间:2023-05-04 17:23:38 阅读:163593 作者:4395

OpenCV提供了许多用于图像轮廓处理的函数,其中使用cvFindContours函数提取轮廓,然后使用cvDrawContours函数绘制提取的轮廓。 函数cvFindContours的第一个参数是要从中提取轮廓的目标图像。 在这里请注意。 此图像必须是二值图表。 得到二值图的方法有很多,这里使用cvThreshold函数,通过设定阈值得到对应的二值图。 当然,这里的阈值选择可以根据图片自己适当调整,所以很有效!

源代码如下所示。

# include opencv/cv.h # include opencv/highgui.h # if _ debug # pragma comment (lib,' opencv_highgui249d.lib ' ) ' opencv_imgproc249d.lib ' ) else#definexx#pragmacomment ) lib ) define xx # pragma comment ' opencv _ img proc 249.limg IplImage* dst=NULL; cvmemstorage * storage=cvcreatememstorage (0; CvSeq* contour=0; int contours=0; CvScalar external_color; CvScalar hole_color; src=cv loadimage (e :\ opencv\ picrect.jpg ',1 ); img=cvcreateimage (cv getsize (src ),IPL_DEPTH_8U,1 ); dst=cvcreateimage (cv getsize (src )、src-depth、src-nChannels ); cvcvtcolor(src,img,CV_BGR2GRAY ); cvThreshold(img,img,100,200,CV_THRESH_BINARY ); contours=cvfindcontours(img,storage,contour,sizeof ) contour )、CV_RETR_LIST、cv _ chain _ approx _ nonone _ nond contour=0; contour=contour-h _ next (external _ color=cv _ RGB (rand ) 255、rand ) 255和rand ) 255 ); hole_color=cv_RGB(rand ) 255、rand ) 255、rand ) 255 ); cvdrawcontours(dst,contour,external_color,hole_color,1,2,8 ); }cvnamedwindow('contour ',1 ); CVShowimage(contour )、dst; cv save image (e :/opencv/out.jpg )、dst ); cvwaitkey(0; cvreleasememstorage; cvreleaseimage(src ); cvreleaseimage(img; cvreleaseimage(dst; 返回0; }

执行结果图表:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。