2012-08-16 145 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分配给矩阵的每个元素。