GrabCut
原图必须是bgr图片,不能包含a通道
Mat mask = Mat::zeros(frame.rows, frame.cols, CV_8U);
Mat bgModel,fgModel;
cv::Rect rect(10,10,frame.cols-20,frame.rows-10);
grabCut(f1, mask, rect, bgModel, fgModel, 5, GC_INIT_WITH_RECT);
compare(mask, GC_PR_FGD, f2, CMP_EQ);
compare(mask, GC_PR_BGD, f3, CMP_EQ);
bitwise_and(f1, f1, f4, f2);
bitwise_and(f1, f1, f5, f3);
迭代了5次
修正遮罩
上面代码无法正常抠出这张图, 需要做遮罩处理,没成功,大家可以试试,将修改的阀值图给到mask然后处理的时候不用rect做参数,最后一项选择MASK方式。
GrabCut效率还是挺低的,一次迭代也很慢,而且效果不好。作为实时扣图不看好。