我得到了这张图片,我想用白色填充左上角的黑色区域,但我得到的只是一张全白的图片……知道我的代码有什么问题吗?
代码:
...
cv::Rect rect;
roi = cv::floodFill(roi, cv::Point(1,1), cv::Scalar(0), &rect, cv::Scalar(0), cv::Scalar(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;
}
请注意,我使用 200 作为 upDiff 参数,因为如果将其设置为 0,则连接组件内部将不会考虑一些灰色像素,如果这确实是您想要的,请更改它。
不确定,但根据我能够挖掘的文档,它说cv::floodFill()
返回一个int
. 因此,假设这roi
是一个矩阵并且 openCV 矩阵类定义operator=
了int
参数,您可以为int
矩阵的每个元素分配一些。