i thankful know further on post: finding minimum distance between contours
i using findcontours , required getting multiple contours. problem want find min distance between each adjacent pair, e.g. between yellow contour , dark green, between dark green , cyan, between cyan , purple.
i understood general method above post. can please tell me how can select them 1 after another(automaticaly)?

void thresh_function(int, void*) { mat canny_output; vector<vector<point> > contours; vector<vec4i> hierarchy; /// detect edges using canny canny( roiimg, canny_output, threshold_value, threshold_value*2, 3 ); /// find contours findcontours( canny_output, contours, hierarchy, cv_retr_tree, cv_chain_approx_simple, point(0, 0) ); /// draw contours mat drawing = mat::zeros( canny_output.size(), cv_8uc3 ); for( int = 0; i< contours.size(); i++ ) { scalar color = scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) ); drawcontours( drawing, contours, i, color, 2, 8, hierarchy, 0, point() );//scalar(255,255,255) } erode(drawing,drawing,erodeelement2); erode(drawing,drawing,erodeelement1); dilate(drawing,drawing,dilateelement); /// show in window //namedwindow( "contours", cv_window_autosize ); resize(drawing, enlarged0, size(), 2, 2, cv_inter_cubic); done = 1; imshow("contours", enlarged0); }
vector<vector<point> > all_contours; ... findcontours(... all_contours ... cv_chain_approx_none ...); ... // remove small contours int minsize = 20; vector<vector<point> > contours; contours.reserve(all_contours.size()); for(int i=0; i<all_contours.size(); ++i) { if(all_contours[i].size() > minsize) { contours.push_back(all_contours[i]); } } mat1f dist(contours.size(), contours.size(), 0.f); for(int i=0; i<contours.size()-1; ++i) { const vector<point>& firstcontour = contours[i]; for(int j=i+1; j<contours.size(); ++j) { const vector<point>& secondcontour = contours[j]; float d = compute_pairwise_distance(firstcontour, secondcontour); // should implement dist(i,j) = d; dist(j,i) = d; // distance first second equal // distance second first } } // dist contains pairwise distances between i-th , j-th contours
Comments
Post a Comment