//------------------------------------------------------------------------------------- //Label and extract isolated regions from foreground mask //------------------------------------------------------------------------------------- void Tracking_STIP::Bwlabel(cv::Mat Fmask, cv::Mat &Out){ cv::Mat cFmask = Fmask.clone(); Erosion(cFmask ,cFmask); cv::Mat A = cFmask.clone(); cv::findContours(A, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); Nroi = 0; //Variables to store contours coordinates of each isolated region Xcroi.clear(); Ycroi.clear(); std::vector<int> X_temp; std::vector<int> Y_temp; for(int i=0; i<contours.size(); i++ ) { pt.x = contours[i][0].x; pt.y = contours[i][0].y; if(contours[i].size()>=minArea) { Nroi++; floodFill(cFmask,pt, cv::Scalar::all(Nroi)); X_temp.clear(); Y_temp.clear(); //store contours coordinates for(int j=0; j<contours[i].size();j++){ X_temp.push_back(contours[i][j].x); Y_temp.push_back(contours[i][j].y); } Xcroi.push_back(X_temp); Ycroi.push_back(Y_temp); } else { floodFill(cFmask,pt, cv::Scalar::all(0)); } } //Imagesc(cFmask,Nroi,"test2"); //cv::waitKey(); Out = cFmask.clone(); }
void Bitmap::Closing() { Dilation(); Erosion(); }
void Bitmap::Opening() { Erosion(); Dilation(); }