Esempio n. 1
0
void ImageViewer::watershedClick()
{
    cv::Mat result;
    cv::Mat bgModel, fgModel;
    //cv::Rect rectangle(50, 70, image.cols-150, image.rows-180);
    cv::Rect rectangle2(10,100,380,180);

    cv::grabCut(image,    // input image
                    result,   // segmentation result
                    rectangle2,// rectangle containing foreground
                    bgModel,fgModel, // models
                    5,        // number of iterations
                    cv::GC_INIT_WITH_RECT); // use rectangle

    // Get the pixels marked as likely foreground
    cv::compare(result, cv::GC_PR_FGD, result, cv::CMP_EQ);
    // Generate output image
    cv::Mat foreground(image.size(), CV_8UC3, cv::Scalar(255, 255, 255));
    //image.copyTo(foreground, result); // bg pixels not copied

    // draw rectangle on original image
    //cv::rectangle(image, rectangle, cv::Scalar(255,255,255), 1);

    //foreground.create(image.size(),CV_8UC3);
        //foreground.setTo(cv::Scalar(255,255,255));
        result = result & 1;
        image.copyTo(foreground, result); // bg pixels not copied
        //result = result & 1;

    imageDisplay(foreground);
}
Esempio n. 2
0
void Substrate::drawToScreen()
{
	CImgDisplay imageDisplay(m_image,"Substrate", 0);

	while(!imageDisplay.is_closed()) 
	{
		for(unsigned int n = 0; n < m_cracks.size(); ++n)
		{
			if(!m_cracks[n].move())
				makeCrack();
		}

		if(imageDisplay.is_keyS())
			Artist::saveFrame(m_image, "./images/Substrate.png");
		else if(imageDisplay.is_keyR())
			initializeCanvas();

		imageDisplay.display(m_image);
	}
}