问题标签 [flood-fill]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6830 浏览

c# - 执行洪水填充的不同方法

大家好,我有几种不同的方法来执行 FloodFill。所有这些都会导致问题。我将列出 3 种方法并解释每种方法会发生什么。如果有人能给我一些建议,那就太好了。我看过一些类似的帖子,但没有一篇是针对 C#、java 或 VB.net(我知道的唯一语言)的。

为此,我有一个名为 PixelData 的类,它将颜色存储在 CellColor 成员变量中。我有一个大小为 50x50 的 PixelData 对象数组,称为“像素”。我还有一个名为 CANVAS_SIZE 的常量,在这种情况下为 50。以下是我尝试使用的三种方法。

这个是递归的。它非常容易发生堆栈溢出。在此方法完成后,我尝试设置一个启用 CanFill 成员的计时器。这仍然不能防止溢出:

接下来我有一个使用基于队列的填充的方法。此方法在运行时会导致 OutOfMemory 异常,并且在填充整个画布时非常慢。如果只是填充画布的一小部分,它有点有效:

我尝试过的最后一种方法也使用基于队列的洪水填充。这种方法比以前基于队列的洪水填充要快得多,但最终也会在运行时导致 OutOfMemory 异常。同样,我尝试设置一个 FillDelay 计时器,以防止用户快速单击,但这仍然不能阻止异常的发生。这个问题的另一个错误是它很难正确填充小区域。在我让它不崩溃之前,我认为修复它没有任何意义。

感谢大家的帮助!所有这些方法都是基于维基百科上的伪代码。

编辑:

我选择了 RevisedQueueFloodFill 并按照建议进行了修改,以便在循环中不声明任何变量。仍然会生成 OutOfMemory。即使有一个填充延迟计时器。

0 投票
1 回答
2931 浏览

python - 等效于 Python 的 Matlab 函数(Flood Fill)

快速提问,我正在寻找一个 python 函数来执行 matlab 的 imfill.m 所做的等效工作。我意识到 python 有 openCV,但我无法让它正常工作,并试图找到它的替代品。我试图复制的 imfill 部分是它的“漏洞”部分。

我有一个已生成的蒙版,但我试图填充被“土地”包围的所有区域,只留下未填充的水域。

如果这还不够清楚,请告诉我,我可以尝试更具体。感谢您的时间。

0 投票
2 回答
1231 浏览

ios - 在 UIView 上层中填充颜色选定区域

我正在尝试为 iPhone/iPad 开发绘画类型应用程序。我已经完成了 70%,但其中一项功能需要时间来完成。我在其中添加了使用选定颜色功能填充选定区域。我做到了,但它需要很多时间或工作太慢。由于此功能,整个应用程序变得冻结。绘图视图的结构:- UIView(父视图)-UIImageView(SubView1)-将图像保留为背景-UIImageView(SubView2)-绘制颜色或绘制线条

0 投票
1 回答
1292 浏览

algorithm - 了解如何用最少的矢量线填充多边形

假设我有一个带孔的矢量多边形。我需要通过绘制连接段来填充它。当然,因为有洞,我不能用一条连续的折线来填充它:有时我需要打断我的路径,然后移动到一个被跳过的区域并在那里开始另一条折线。

我的目标是找到一组需要填充整个多边形的折线。如果我能找到最小的集合(也就是说,我可以用最少的中断次数填充多边形)会更好。

额外的问题:对于部分密度填充,我怎么能做到这一点?说,我不想以 100% 的密度填充,但我想要 50%(这将要求填充线,假设它们彼此平行并且具有单个单位的宽度,放置在两个单位的距离处)。

尽管有很多与洪水填充算法相关的问题,但我在这里找不到类似的问题。

任何想法或指示?

更新:这张来自维基百科的图片显示了一条很好的假设洪水路径。我相信我可以使用位图来做到这一点。但是我有一个矢量多边形。我应该光栅化它吗?

路径示例

0 投票
2 回答
954 浏览

java - 绘图/着色应用程序 - 洪水填充算法/剪切区域

我必须开发一个着色应用程序。基本上,用户会看到一个图像。可能是一个字符的轮廓,用户可以使用不同的颜色填充它。我查看了几个选项,但似乎找不到一个好的选项。

有人可以告诉我如何填充位图图像。

我可以使用任何示例代码吗?还是开源项目?

它必须在

0 投票
1 回答
1559 浏览

polygon - 用 CImg 中的图案填充形状

我希望能够绘制形状并用各种填充图案(对角线、点画点等)填充它们。

CImg 库包括用于绘制具有任意线条图案的各种形状的功能。但我没有看到任何关于填充模式的信息。

我认为这可能可以使用按位或数学运算符将图案掩码到实心图像上来完成,但我想看看具体的代码。

0 投票
2 回答
1901 浏览

algorithm - 用矩形填充 2D 形状

我希望用矩形填充任意 2D 形状,例如通过查看矩形的合成图像可以看到 2d 形状。最终结果应该类似于此应用程序生成的图像:http: //www.shapecollage.com/(不,我不是要复制所述应用程序,但我想提供类似的功能作为更大应用程序的一部分) .

我从这个SO question 中知道,可能不存在针对我的问题的最佳解决方案,但是应该有一个相当好的结果,并且足以满足我的要求。到目前为止,我已经基于洪水填充算法的思想尝试了以下两种方法:

方法一

  1. 从形状中的任意点开始,在此点绘制一个矩形。

  2. 检查上一个图像的右下左上的一个点,例如如果与上一个图像并排绘制,则检查的点对应于下一个图像的中心

    // 为右移寻找新的 x 坐标的示例

    newCenter.x = oldCenter.x + oldWidth + newWidth;

  3. 检查新的中心点是否 a) 在 2D 形状中和 b) 不在已绘制的矩形内。如果两个条件都满足,则绘制矩形并继续第 2 步,否则不执行任何操作。

方法二

与方法 1 相同,但没有条件,即矩形的新中心不允许在绘制的矩形内。而是添加了所有方向的填充。

两种方法都提供了极其有限的结果,并且无法完全填充形状,尽管有时部分轮廓在方法 1 中变得可见。

我很高兴我可以尝试获得与上述示例类似的结果的任何输入、想法或经过验证的方法。谢谢!

0 投票
0 回答
884 浏览

android - android floodfill opencv UnsatisfiedLinkError

故事:
在 android 屏幕上,我显示了一张带有尺子的图片。我在标尺内部单击并像这样填充它:

不幸的是,结果很糟糕,因为标尺的轮廓没有闭合,图片几乎完全填满。
从我的台式电脑上的 floodfill.cpp 示例返回了更好的结果,我尝试在 android 上执行类似的操作,如下所示:

在这里,我得到了 UnsatisfiedLinkError。这怎么可能?Impproc.floodfill(...
提供四种不同的洪水填充变体(具有不同的参数),只有第一个(数字 1)有效。所有其他:UnsatisfiedLinkError

问题:
这是否意味着提供了其他变体但未实施?

€dit:错误发生在第 96 行。可以在此处找到logcat 输出。

0 投票
5 回答
19725 浏览

java - Android洪水填充算法

有谁知道用于洪水填充的迭代且有效的算法?

或者有什么方法可以实现floodfill没有堆栈溢出错误的递归算法?

使用堆栈尝试了@Flood 填充, 但我找不到处理黑白图像的方法。

0 投票
1 回答
1333 浏览

iphone - iPhone油漆桶

我正在努力在 iPhone 应用程序中实现一个洪水填充油漆桶工具,但遇到了一些麻烦。用户可以绘画,我希望油漆桶允许他们点击一个点并填充所有连接的颜色。

这是我的想法:1)从用户选择的点开始 2)将检查的点保存到 NSMutableArray 以便它们不会被重新检查 3)如果当前点的像素颜色与原始单击点相同,则保存到一个稍后要更改的数组 4)如果当前点的像素颜色与原始不同,则返回。(边界) 5)一旦完成扫描,通过像素阵列进行更改并将它们设置为新颜色。

但这到目前为止还没有奏效。任何有关如何执行此操作的帮助或知识将不胜感激!这是我的代码。