2012-08-16 30 views
2

我得到這個圖像,我想用白色填充左上方的黑色區域,但我得到的只是一個完全白色的圖像......任何想法我的代碼有什麼問題?OpenCV C++:Floodfill

代碼:

... 
cv::Rect rect; 
roi = cv::floodFill(roi, cv::Point(1,1), cv::Scalar(0), &rect, cv::Scalar(0), cv::Scalar(0), 4); 
... 

輸入圖像:
enter image description here

回答

3

這是像我用下面的代碼獲得:

int main()  
{ 
    cv::Mat image = cv::imread("TF2XE.jpg", -1);  
    cv::imshow("image before filling", image);  
    int filling = cv::floodFill(image, cv::Point(0,0), 255, (cv::Rect*)0, cv::Scalar(), 200); 
    cv::imshow("image after filling", image);  
    cv::waitKey();  
    return 0;  
} 

Output image http://i46.tinypic.com/35mksiq.jpg

請注意,我用200 upDiff參數,因爲如果你把它設置爲0會有一些灰色像素那將不會被考慮在連接的組件內部,如果這確實是你想要的,就改變它。

2

不知道,但根據documentation我能挖,它說cv::floodFill()返回int。因此,假設roi是矩陣,並且openCV矩陣類定義operator=int參數,則可以將一些int分配給矩陣的每個元素。