GrabCut,主要功能是分割前景和背景。
1)你只需要在目標外面畫一個框,把目標框住,它就可以完成良好的分割:
2)如果增加額外的用戶交互(利用標記來指定前背景),那麼效果就可以更完美:
缺點
1.
如果背景比較複 雜或者背景和目標相似度很大,那分割就不太好了
2.
速度有點慢。
GrabCut 函式定義
void grabCut(InputArray img, InputOutputArray mask, Rect
rect,
InputOutputArray
bgdModel, InputOutputArray fgdModel,
int iterCount, int
mode=GC_EVAL )
img:待分割的來源圖,必须是8位3通道(CV_8UC3)图像,在處理過程中不會被修改;
mask:遮掩圖像,大小和原圖一致。可以有如下幾種參數:
GC_BGD(=0),背景;
GC_FGD(=1),前景;
GC_PR_BGD(=2),可能的背景;
GC_PR_FGD(=3),可能的前景。
rect:限定需要進行分割的圖像範圍,只有該矩形內部可以進行處理
bgdModel:背景模型,如果為null,函数内部會自己創建一個bgdModel(背景模組)
fgdModel:前景模型,如果為null,函数内部會自己創建一個fgdModel(前景模組)
iterCount:迭代次數,必须大於0;(越高分越準,但會影響處理時間)
mode:用於指示grabCut函式進行什麼操作。可以有如下幾種選擇:
GC_INIT_WITH_RECT(=0),用矩形窗初始化GrabCut
GC_INIT_WITH_MASK(=1),用被遮蓋的圖初始化GrabCut