⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5-3.cpp

📁 基于OpenCV的计算机视觉技术实现.rar
💻 CPP
字号:
//提取物体的轮廓 并画出轮廓

//
/*

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"

#include "iostream.h"

void main( )
{

	int i=0;

	int mode = CV_RETR_CCOMP;			//提取轮廓的模式

	int contours_num=0;				//图像中提取的轮廓的数目

	CvScalar external_color ;			//绘制轮廓线的颜色
	CvScalar hole_color;

	CvMemStorage * storage = cvCreateMemStorage(0);	//提取轮廓时需要的存储容器

	CvSeq * contour = 0;				//存储提取轮廓的序列指针

	IplImage* pImg = NULL;
	IplImage* pContourImg = NULL;			//显示提取的轮廓图像
	IplImage* src=cvLoadImage("pic3.png",-1); 

	
	pImg=cvCreateImage(cvGetSize(src),src->depth,1);

	pContourImg = cvCreateImage(cvGetSize(pImg),IPL_DEPTH_8U,3);

	cvCvtColor(src,pImg,CV_BGR2GRAY);		//将读取的图像转为灰度图


	cvNamedWindow("src", 1);
	cvNamedWindow("contour",1);  
	cvShowImage( "src", src );			//显示原图


	cvThreshold(pImg,pImg,180,255,CV_THRESH_BINARY);//转为二值图(cvFindContours需要)

 
  
    //-------------------cvFindContours查找物体轮廓-------------------------

	 mode = CV_RETR_LIST;			

	  contours_num=cvFindContours( pImg, storage, &contour, sizeof(CvContour), 
		  mode, CV_CHAIN_APPROX_NONE);

	  cout<<contours_num<<"  "<<endl;		//找到的轮廓数目
	  
	  
    //----------------------------将轮廓画出----------------------

	  for( ; contour != 0; contour = contour->h_next )
        {
	    hole_color = CV_RGB( rand()&255, rand()&255, rand()&255 );
            external_color  = CV_RGB( rand()&255, rand()&255, rand()&255 );
            cvDrawContours( pContourImg, contour, external_color, hole_color,1 , 2, 8 );
        }


	  //----显示提取的轮廓的图像----
	  cvShowImage( "contour", pContourImg );
	  
	  cvWaitKey(0);

	  //释放图像
	  cvReleaseImage( &src ); 
	  cvReleaseImage( &pImg );
	  cvReleaseImage( &pContourImg ); 	  
	  cvReleaseMemStorage(&storage);
	  
}


//*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -