mirror of
https://github.com/opencv/opencv.git
synced 2024-11-27 20:50:25 +08:00
Merge pull request #20200 from rmeertens:update_grabcut
This commit is contained in:
commit
cc2592f582
@ -107,12 +107,14 @@ void GCApplication::showImage() const
|
||||
|
||||
Mat res;
|
||||
Mat binMask;
|
||||
if( !isInitialized )
|
||||
image->copyTo( res );
|
||||
else
|
||||
{
|
||||
getBinMask( mask, binMask );
|
||||
image->copyTo( res, binMask );
|
||||
image->copyTo( res );
|
||||
if( isInitialized ){
|
||||
getBinMask( mask, binMask);
|
||||
|
||||
Mat black (binMask.rows, binMask.cols, CV_8UC3, cv::Scalar(0,0,0));
|
||||
black.setTo(Scalar::all(255), binMask);
|
||||
|
||||
addWeighted(black, 0.5, res, 0.5, 0.0, res);
|
||||
}
|
||||
|
||||
vector<Point>::const_iterator it;
|
||||
@ -201,24 +203,39 @@ void GCApplication::mouseClick( int event, int x, int y, int flags, void* )
|
||||
case EVENT_LBUTTONUP:
|
||||
if( rectState == IN_PROCESS )
|
||||
{
|
||||
rect = Rect( Point(rect.x, rect.y), Point(x,y) );
|
||||
rectState = SET;
|
||||
setRectInMask();
|
||||
CV_Assert( bgdPxls.empty() && fgdPxls.empty() && prBgdPxls.empty() && prFgdPxls.empty() );
|
||||
if(rect.x == x || rect.y == y){
|
||||
rectState = NOT_SET;
|
||||
}
|
||||
else{
|
||||
rect = Rect( Point(rect.x, rect.y), Point(x,y) );
|
||||
rectState = SET;
|
||||
setRectInMask();
|
||||
CV_Assert( bgdPxls.empty() && fgdPxls.empty() && prBgdPxls.empty() && prFgdPxls.empty() );
|
||||
}
|
||||
showImage();
|
||||
}
|
||||
if( lblsState == IN_PROCESS )
|
||||
{
|
||||
setLblsInMask(flags, Point(x,y), false);
|
||||
lblsState = SET;
|
||||
nextIter();
|
||||
showImage();
|
||||
}
|
||||
else{
|
||||
if(rectState == SET){
|
||||
nextIter();
|
||||
showImage();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EVENT_RBUTTONUP:
|
||||
if( prLblsState == IN_PROCESS )
|
||||
{
|
||||
setLblsInMask(flags, Point(x,y), true);
|
||||
prLblsState = SET;
|
||||
}
|
||||
if(rectState == SET){
|
||||
nextIter();
|
||||
showImage();
|
||||
}
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user