本文实例为大家分享了Opencv处理图像之轮廓提取,使用cvfindContours对图像进行轮廓检测,供大家参考,具体内容如下
# include# include # include int main () { IplImage * img=cvLoadImage (“E: \ \ test.bmp ", 0); IplImage * imgColor=cvCreateImage (cvGetSize (img), 8日,3); IplImage * contoursImage=cvCreateImage (cvSize (img→宽度,img→高度),8日,1); cvNamedWindow(“回族”); cvShowImage(“回族”,img); cvThreshold (img, img, 100255年,CV_THRESH_BINARY);//二值化图像以100为阀值 cvNamedWindow (“2”); cvShowImage (“2”, img); CvSeq *轮廓=0,* contoursTemp=0; cvZero (contoursImage); cvCvtColor (img imgColor CV_GRAY2BGR);//颜色转化函数//img:需要提前的图片需要二值//存储:存放的空间//轮廓:指向轮廓提取的第一个轮廓//运算符(CvContour):采用的是哪一种结构以及大?/CV_RETR_LIST:轮廓存储方式//CV_CHAIN_APPROX_NONE:采用坐标集表示轮廓 CvMemStorage *存储=cvCreateMemStorage (0); int总=cvFindContours (img、存储和轮廓,sizeof (CvContour) CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cvPoint (0, 0)); printf (" % d”,总);//输出总的轮廓数 contoursTemp=轮廓; 而(contoursTemp !=0) { (int i=0; i< contoursTemp→总,我+ +){ CvPoint * pt=(CvPoint *) cvGetSeqElem (contoursTemp,我); cvSetReal2D (contoursImage pt→y, pt→x 255.0); cvSet2D (imgColor pt→y, pt→x, cvScalar (0, 0255 .0)); } contoursTemp=contoursTemp→h_next; } cvNamedWindow (img); cvShowImage (img, imgColor); cvNamedWindow (“contoursImage”); cvShowImage (“contoursImage”, contoursImage); cvWaitKey (0); 返回0; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。