我得到了这张图片,我想用白色填充左上角的黑色区域,但我得到的只是一张完全白色的图片......任何想法我的代码有什么问题?
代码:
...
cv::Rect rect;
roi = cv::floodFill(roi, cv::Point(1,1), cv::Scalar(0), &rect, cv::Scalar(0), cv::Scalar(0), 4);
...
输入图片
答案 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
。