Пример #1
0
//-------------------------------------------------------------------------------------
//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();
}
Пример #2
0
void Bitmap::Closing()
{
    Dilation();
    Erosion();
}
Пример #3
0
void Bitmap::Opening()
{
    Erosion();
    Dilation();
}