#include "stdafx.h"
#include
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 > contours;
vector 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);
}