影像分割(grabCut)

    xiaoxiao2021-03-25  79

    OpenCV提供另一個grabCut影像分割演算法,計算方式較watershed更複雜,但結果比較精確,如果想要從靜態影像提取前景物體,像是將一幅影像中的物體剪貼到另一幅圖中,這是最佳算法。


    提取前景

    void grabCut(InputArray img, InputOutputArray mask, Rect rect, InputOutputArray bgdModel, InputOutputArray fgdModel, intiterCount, int mode=GC_EVAL)

    img:輸入圖,8位元3通道。mask :輸出圖,8位元單通道圖。rect :輸入矩形,在這之外的像素全都是背景,只有mode參數是GC_INIT_WITH_RECT時才有效。bgdModel:背景模型,供演算法內部使用,基本上可以忽略。fgdModel:前景模型,供演算法內部使用,基本上可以忽略。intiterCount:迭代次數。mode:處理模式。

    輸出圖mask每個像素為以下四個標誌之一:

    GC_BGD:確定是背景。GC_ FGD :確定是前景。GC_PR_BGD:可能是背景。GC_PR_ FGD :可能是前景。

    mode:有以下三種可選擇:

    GC_INIT_WITH_RECT:提供矩形範圍的初始條件。GC_INIT_WITH_MASK:提供遮罩,可和GC_INIT_WITH_RECT共同使用,在這ROI之外的為背景。GC_EVAL:預設模式。

    GrabCut對影像進行切割,來獲得最佳配置,不斷迭代優化結果,根據場景的複雜度,得到滿意結果的迭代次數可多可少。

    转自:http://monkeycoding.com/?p=648

    转载请注明原文地址: https://ju.6miu.com/read-10413.html

    最新回复(0)