[英]OpenCV grabcut: how to combine GC_INIT_WITH_RECT and GC_INIT_WITH_MASK
[英]openCV grabcut GC_INIT_WITH_MASK first iteration
他,我該如何用遮罩初始化第一個Grabcut? 就我而言,每次遇到此錯誤時:(-215)initGMMs中的!bgdSamples.empty()&&!fgdSamples.empty()。 是否可以使用mask運行第一次Grabcut迭代? 當我在Rect中使用第一個Grabcut迭代時,它已經可以工作了。 這是我用mask進行初始化的代碼(第二個迭代):
mask = Mat::ones(image_.size(), CV_8UC1) * GC_PR_BGD; //GC_PR_BGD
// GrabCut segmentation
grabCut(GrabCut::image, // input image
GrabCut::mask, // segmentation result
Rect(),// rectangle containing foreground
GrabCut::bgModel,GrabCut::fgModel, // models
iteration, // number of iterations
GC_INIT_WITH_MASK ); // use mask
fyi當將模式設置為GC_INIT_WITH_RECT時,該掩碼由函數初始化。 遮罩有4個“層”:
GC_BGD defines an obvious background pixels.
GC_FGD defines an obvious foreground (object) pixel.
GC_PR_BGD defines a possible background pixel.
GC_PR_FGD defines a possible foreground pixel.
謝謝
它不是完美的,但結果很干凈,圖像邊緣沒有矩形。
通過使用GC_PR_FGD / BGD作為顏色在圖像周圍繪制更大的矩形
int xyCord = 1; int size = 2*xyCord; rectangle(GrabCut::mask, Point(xyCord,xyCord),Point(GrabCut::image.cols-size,GrabCut::image.rows-size),Scalar(GC_PR_FGD),30); rectangle(GrabCut::mask, Point(xyCord,xyCord), Point(GrabCut::image.cols-size,GrabCut::image.rows-size),Scalar(GC_PR_BGD),30);
第二個戴着面具的Grabcut初始化
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.