本文共 1232 字,大约阅读时间需要 4 分钟。
转自:
此案例位于CXCORE中cvDrawContours函数介绍部分给出。此程序首先载入一个二值图像文件,然后使用函数再次二值化确认。接着使用cvFindContours找到轮廓,然后使用填充方式绘制轮廓线内部区域,由此得到的彩色区域便是联连通区域。其中,黑色是0值区域,彩色区域便是连通区域。连通区域的色彩是使用随机数生成的。
// bwlabel.cpp
#include <cv.h> #include <highgui.h> int main( int argc, char** argv) { IplImage* src; // the first command line parameter must be file name of binary (black-n-white) image if( argc == 2 && (src=cvLoadImage(argv[1], 0))!= 0) { IplImage* dst = cvCreateImage( cvGetSize(src), 8, 3 ); CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contour = 0; cvThreshold( src, src, 1, 255, CV_THRESH_BINARY ); cvNamedWindow( "Source", 1 ); cvShowImage( "Source", src ); cvFindContours( src, storage, &contour, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE ); cvZero( dst ); for( ; contour != 0; contour = contour->h_next ) { CvScalar color = CV_RGB( rand()&255, rand()&255, rand()&255 ); /* replace CV_FILLED with 1 to see the outlines */ cvDrawContours( dst, contour, color, color, -1, CV_FILLED, 8 ); } cvNamedWindow( "Components", 1 ); cvShowImage( "Components", dst ); cvWaitKey(0); } return 0; }
在OpenCV 1.1、VC6.0编译运行通过。实验过程如下:
1. 选择OpenCV sample/c中的一个二值图像。 2. 运行中输入cmd,使用命令行进入程序编译结果debug文件夹(即exe所在目录),将图片文件放入此文件夹。 3. 使用命令,运行程序:bwlabel pic1.png转载地址:http://gsjef.baihongyu.com/