c# - FloodFill 函数产生奇怪的结果
问题描述
我需要在 C# 中使用 EMGUCV 的 floodFill 函数。
我设法像这样使用它:
Image<Gray, Byte> img = new Image<Gray, byte>(this.B);
img.Save("orig.png");
int height = img.Rows;
int width = img.Cols;
Point s = new Point( 227, 295);
int tol = 8;
Mat outputMask = new Mat(height + 2, width + 2, Emgu.CV.CvEnum.DepthType.Cv8U, 1);
Rectangle dummyRect = new Rectangle();
CvInvoke.FloodFill(img,
outputMask,
s,
new MCvScalar(255, 0, 0),
out dummyRect,
new MCvScalar(tol), new MCvScalar(tol),
Emgu.CV.CvEnum.Connectivity.EightConnected);
//Emgu.CV.CvEnum.FloodFillType.MaskOnly);
img.Save("imgModif.png");
Console.Write("End");
但是,当我使用它时,我在 img(或 outputMask)中得到的输出根本没有任何意义。一些白色的矩形区域。我期待“像photoshop”魔术棒的结果。知道什么是错的吗?此外,即使我将 (255,0,0) 指定为填充颜色,img 中的结果也是白色。(B 是预加载的位图图像)
我正在尝试这样做:
http://www.andrew-seaford.co.uk/flood-fill-opencv/
除了我最初使用灰度图像。
如果我设置 tol=255(如果这个函数真的像一根魔杖,它应该用白色填充整个图像),这就是我得到的:
这个可以看到的“矩形”没有意义,更糟糕的是,你可以看到这个矩形区域(在莉娜的帽子上)有一些白色像素......所以它甚至看起来都不是一种矩形约束。“伪矩形”中的一些像素也不是白色的......如果有人可以在他们的系统上使用 lena 图像测试这个功能,我会很好奇。
解决方案
推荐阅读
- google-apps-script - Google表格脚本:范围内单元格的setValue
- node.js - 如何在我的实时 ubuntu 服务器上更新节点和 npm?
- python - 我可以使用 Python 从其中一个值中获取 JSON 模式的名称吗?
- firefox-addon - 替换缩略图和主题切换
- amazon-web-services - 如何使用 Azure DevOps/Pipeline/Release 中“AWS Secrets Manager-Get Secret”中的 AWS 插件从一个密钥中仅获取一个秘密值
- powershell - 通过 powershell 使用文本文件中的内容运行批处理文件
- django - 覆盖 Django 管理界面的查询集
- python - 如何使 VS 代码 IntelliSense 仅显示类属性而不显示构建对象属性?
- google-earth-engine - 错误:.select(...).sampleRegions 不是函数 - 如何解决?
- matplotlib - Matplotlib:带标记的等高线图线样式