123456789101112131415161718192021222324252627282930313233343536373839 |
- #include "opencv2/imgproc.hpp"
- #include "opencv2/highgui.hpp"
- using namespace cv;
- using namespace std;
- 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 > 1;
- namedWindow( "Source", 1 );
- imshow( "Source", src );
- vector<vector<Point> > contours;
- vector<Vec4i> hierarchy;
- findContours( src, contours, hierarchy,
- RETR_CCOMP, CHAIN_APPROX_SIMPLE );
- // 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, FILLED, 8, hierarchy );
- }
- namedWindow( "Components", 1 );
- imshow( "Components", dst );
- waitKey(0);
- }
|