findContours 和 drawContours 的例子:來(lái)自
#include "stdafx.h"
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main( int argc, char** argv )
{ Mat src;
// the first command-line parameter must be a filename of the binary (black-n-white) image
if( argc != 2 || !(src=imread(argv[1], 0)).data)
return -1;Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);
src = src > 50;
namedWindow( "Source", 1 );
imshow( "Source", src );vector<vector<Point> > contours;
vector<Vec4i> hierarchy;findContours( src, contours, hierarchy, CV_RETR_CCOMP , CV_CHAIN_APPROX_NONE );
// iterate through all the top-level contours,draw each connected component with its own random color
int idx = 0;
for( ; idx >= 0; idx = hierarchy[idx][0] )
{
Scalar color( rand()&255, rand()&255, rand()&255 );
drawContours( dst, contours, idx, color, CV_FILLED, 8, hierarchy );
}namedWindow( "Components", 1 );
imshow( "Components", dst );
waitKey(0);}
〉按輪廓線,提取圖像中閉合區(qū)域:findContours,對(duì)應(yīng)的C接口為cvFindContours。
> 加入canny邊緣檢測(cè),可以得到另一組結(jié)果。
結(jié)果:
聯(lián)系客服