【发布时间】:2020-05-28 13:28:19
【问题描述】:
我正在尝试在如下图像上使用floodFill 来提取天空:
但即使我设置了loDiff=Scalar(0,0,0) 和upDiff=Scalar(255,255,255),结果也只是显示种子点并且不会变大(绿点):
代码:
Mat flood;
Point seed = Point(180, 80);
flood = imread("D:/Project/data/1.jpeg");
cv::floodFill(flood, seed, Scalar(0, 0, 255), NULL, Scalar(0, 0, 0), Scalar(255, 255, 255));
circle(flood, seed, 2, Scalar(0, 255, 0), CV_FILLED, CV_AA);
这是结果(红点是种子):
如何设置功能以获得更大的区域(如整个天空)?
【问题讨论】:
-
@DanMašek 根据dcoumentation,我认为
Scalar(0,0,255)是结果值。如果您能看到红点,我在问题中添加了结果。 -
是的,你是对的。我的错。
-
查看文档中的公式。有
src(x',y') - loDiff来获得下限。您将loDiff设置为0,因此它只考虑比源更亮的颜色。将Scalar(0, 0, 0)更改为所有 255,看看会发生什么。 -
@DanMašek 谢谢!我误解了 loDiff 的定义。当我设置
loDiff=Scalar(5,5,5)时,它会分隔天空。
标签: python c++ opencv image-processing flood-fill