2015-06-07 134 views
2

我只是想使用洪水填充,但它失敗了,我從來沒有使用過,所以我認爲我做錯了什麼。使用OpenCV洪水填充

Mat flooded=new Mat(); 
Point flood=new Point(1,1); 
// floodedmat = Mat.zeros(myMat2.size(), CvType.CV_8UC1); 
Imgproc.floodFill(myMat2, flooded, flood, new Scalar(255, 255, 255)); 
Utils.matToBitmap(flooded, copy); 

顏色填充後,我打算回它位圖來顯示它,所以我會看到變化。

+0

有人救我 – user3768470

回答

0

你應該使用重載的方法floodFill這需要額外的參數:

Imgproc.floodFill(myMat2, flooded, flood, new Scalar(255, 255, 255), new Rect(), lowerDiff, upperDiff, 4); 

新的矩形()對象是一個矩形邊框,將包含您floodfill; lowerDiffupperDiff應與初始像素值的差值初始化標量(例如:如果它是一個顏色值不同的RGB圖像,可以說在您的種子點(洪水)有一個明亮的黃色像素,它被一個稍微不亮或稍亮的黃色像素,它會用白色矩形填充它們)。你想用3個值進行初始化,即:

Scalar lowerDiff = new Scalar(10, 10, 10); 

,最終整數參數是多少相鄰像素應該此時,floodFill實際考慮,4是默認,8是另一種選擇。 (4將採取北部,東部,西部和南部像素,而8將採取北部,東北部,東部,東南部等像素)。