我得到这个图像,我想用白色填充左上方的黑色区域,但我得到的只是一个完全白色的图像......任何想法我的代码有什么问题?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);
...
输入图像:
我得到这个图像,我想用白色填充左上方的黑色区域,但我得到的只是一个完全白色的图像......任何想法我的代码有什么问题?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);
...
输入图像:
这是像我用下面的代码获得:
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会有一些灰色像素那将不会被考虑在连接的组件内部,如果这确实是你想要的,就改变它。
不知道,但根据documentation我能挖,它说cv::floodFill()
返回int
。因此,假设roi
是矩阵,并且openCV矩阵类定义operator=
的int
参数,则可以将一些int
分配给矩阵的每个元素。