我是靠谱客的博主 殷勤茉莉,最近开发中收集的这篇文章主要介绍【opencv】轮廓外接矩形,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<pre name="code" class="cpp">     //找出图片src中所有轮廓的外接矩形
     IplImage* src;
     src=cvLoadImage((CT2CA)m_strPicPath,1);//读取彩色图
        CvMemStorage* storage = cvCreateMemStorage( 0 );//创建一个内存区域,该区域是额可以动态增长的  
     CvSeq* contours = NULL;  //定义一个序列,这些序列可以存放在上面的内存区域里 
     src=cvLoadImage((CT2CA)m_strPicPath,1);//读取彩色图
     cvFindContours( src, storage, &contours, sizeof( CvContour ), CV_RETR_LIST, CV_CHAIN_APPROX_NONE );//检索所有轮廓 
     /*/-------对于contours的一些基本操作----------
       int c=seq->total;//当前轮廓包含多少个元素,这里的元素为点 
       double length = cvArcLength(seq); //得到指定的那个轮廓的周长,该函数有3个参数:序列,起点(默认计算整条曲线),是否封闭曲线  
       double area = cvContourArea(seq);  //得到指定的那个轮廓的面积
     */
     for( ; contours != NULL; contours = contours -> h_next )//循环遍历检索到的所有轮廓
       {   //---first method------
	   CvRect rect = cvBoundingRect( contours, 1 );	   //根据序列,返回轮廓外围矩形;
           CvRect rect = cvBoundingRect( contours, 1 );
           cvRectangle( cpy, cvPoint( rect.x, rect.y ),cvPoint( rect.x + rect.width, rect.y + rect.height ), cvScalar(255,255,0), 3 );
             
	   //---second method-------	  
	   /* CvBox2D box = cvMinAreaRect2(contours,NULL); //最小外围矩形 
	   //绘制外接最小矩形     
           CvPoint2D32f p[4];    
           cvBoxPoints(box,p);    
           for(int i = 0;i<4;++i)
	   {    
            cvLine(src,cvPointFrom32f(p[i]),cvPointFrom32f(p[((i+1)%4)?(i+1):0]),CV_RGB(0,0,255));    
           } */
      }
      cvShowImage("src",src);    



                

最后

以上就是殷勤茉莉为你收集整理的【opencv】轮廓外接矩形的全部内容,希望文章能够帮你解决【opencv】轮廓外接矩形所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部