天天看點

opencv學習筆記五十八:grabCut摳圖

基本步驟:

  • 基于互動式界面由使用者選擇前景區域;
  • 定義一個單通道的輸出掩碼,0為背景,1為前景,2為可能的背景,3為可能的前景;
  • grabCut摳圖;将輸出結果與可能的前景作比較得到可能的前景;
  • 定義三通道的結果圖像;
  • 從原圖中拷貝可能的前景到結果圖像;
grabCut( InputArray img, InputOutputArray mask, Rect rect,
                           InputOutputArray bgdModel, InputOutputArray fgdModel,
                           int iterCount, int mode = GC_EVAL );
           

 img:輸入原圖像;

mask:輸出掩碼;

rect:使用者選擇的前景矩形區域;

bgModel:輸出背景圖像;

fgModel:輸出前景圖像;

iterCount:疊代次數;

#include<opencv2\opencv.hpp>
using namespace cv;
void onMouse(int event, int x, int y, int flags, void* userdata);
Rect rect;
Mat src,roiImg, result;
void showImg();
int main(int arc, ch