OpenCV C ++:Floodfill

时间:2012-08-16 14:43:29

标签: c++ opencv

我得到了这张图片,我想用白色填充左上角的黑色区域,但我得到的只是一张完全白色的图片......任何想法我的代码有什么问题?

代码:

...
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

2 个答案:

答案 0 :(得分:4)

这是我使用以下代码获得的图像:

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,将会有一些灰色像素在连接的组件内部不会被考虑,如果确实如此,请更改它。

答案 1 :(得分:2)

不确定,但根据我能够挖掘的documentation,它表示cv::floodFill()会返回int。因此,假设roi是一个矩阵,openCV矩阵类为operator=参数定义int,您可以为矩阵的每个元素分配一些int