2

我得到了这张图片,我想用白色填充左上角的黑色区域,但我得到的只是一张全白的图片……知道我的代码有什么问题吗?

代码:

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

输入图像:
在此处输入图像描述

4

2 回答 2

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;    
}   

输出图像

请注意,我使用 200 作为 upDiff 参数,因为如果将其设置为 0,则连接组件内部将不会考虑一些灰色像素,如果这确实是您想要的,请更改它。

于 2012-08-16T17:49:03.437 回答
1

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

于 2012-08-16T14:55:35.483 回答