问题标签 [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 投票
1 回答
108 浏览

iphone - 为什么我的洪水填充算法中的 objectAtIndex 出现 exc_bad_access 错误

我有一个洪水填充功能:

theGrid是一个NSMutableArray整数( a0或 a 1)。它只是一个一维数组,通过乘以(我的网格的宽度)来模拟二维数组。我检查了并且它等于。ySpot120gridCount9600

但是,我得到一个exc_bad_accessat [[theGrid objectAtIndex:(xSpot+ySpot*120)] getValue:&gridValue]。我检查我的xSpot,当这种情况发生时,我每次都ySpot知道。(xSpot+ySpot*120) < 9600所以我知道这并不是我试图访问一个索引在我的数组之外的对象。

此外,在我的刻度函数中,我运行了代码:

我没有收到exc_bad_access错误。请帮我弄清楚为什么我会exc_bad_access出错。

编辑:

我拆分 [[theGrid objectAtIndex:(xSpot+ySpot*120)] getValue:&gridValue]; 进入:

我仍然得到 exc_bad_access,它说它在线:gridValue = [object intValue];

所以我假设这意味着对象已经被释放?我不明白这怎么可能。我认为整数不需要以任何方式保留,因为它们只是整数。另外我认为将对象添加到数组会自动保留它,所以为什么我的 int 会被释放。

在调试部分中,对象的值等于: (_NSCFNumber *) 0x005aec80 (int) 0

0 投票
2 回答
372 浏览

java - 如何将 mouseClicked 添加到脚本

我有floodfill算法,我想添加到这个mouseClicked,但我不知道如何,因为我有很多错误。

这是我的代码。我想从 mouseClicked 获取 x,y 位置并将其提供给“floodFill(image,x,y, yellow);”

谁能帮我?谢谢

0 投票
0 回答
4911 浏览

c++ - OpenCV 中的 Floodfill 函数

Floodfill函数文档中给出的浮动范围和固定范围是什么意思?

我对如下所示的灰度图像使用了填充功能。图像具有三个不同强度的区域。

输入图像

  1. 外矩形 = 170
  2. 内椭圆 = 175
  3. 内部矩形 = 180

我想将 170 和 175 的区域一起作为单个连接的组件和 180 的区域作为单独的组件进行泛洪填充。

我从这里修改了 代码,功能如下:

我使用标志 CV_FLOODFILL_FIXED_RANGE 使用了固定范围(我使用的方式是否正确??

我指定loDiff=0 和 upDiff=6

预计 当种子变为 170 时,170-0 到 170+6 范围内的所有点,即170 到 176外矩形和内椭圆)都被相同的标签填充,并且由于内矩形是 180,它会有不同的标签。

但是我得到如下输出: -

在此处输入图像描述

外矩形和内椭圆没有相同的标签。可能是什么错误?

预期 o/p :内椭圆也是橙色(与外矩形相同)

0 投票
1 回答
595 浏览

paint - MS 油漆克隆 - 如何存储形状

我一直在尝试在 javascript 中创建一个 MS 绘画克隆。一切似乎都很完美,直到我考虑了填充桶工具。我使用的是 processing.js 库,基本上我使用的是内置的形状(椭圆、矩形和线)来绘制。我所做的是将用户绘制的每个形状的“类型”存储在一个数组中并相应地渲染它们。所以如果 shape[i]==1,那么它是一条线,shape[i]=2,它是一个椭圆等等。我这样做是为了按顺序呈现形状。即最后绘制的形状是在所有其他形状之上绘制的。

显然,这种方法不会让我有一个填充桶工具(可能是因为我不知道该怎么做)。我做了一些研究,发现我将不得不使用洪水填充算法。该算法涉及使用大量队列、堆栈和节点等。在我深入研究并考虑实际实现它之前,我想知道我是否必须取消我在这里所做的“存储在数组中”的概念。以及如何将像素表示为“节点”?因为根据洪水填充的维基百科条目,我会使用“节点”来做很多事情。任何想法/资源?

0 投票
2 回答
335 浏览

objective-c - 填充内存泄漏 iPhone

我正在floodfill为 iPhone 用 C 语言实现一个函数。

填充工作,虽然我有 2 个问题。

  1. 执行以下代码几次后,手机会发出内存警告。很可能是内存泄漏。另请注意,unsigned char *data (图像数据)在填充结束时被释放()。

  2. (较小的问题)如果我尝试将RGB颜色写入大于大约(r:200,g:200,b:200,a:200)的像素,我会发生奇怪的伪影。一种解决方法是简单地限制这些值。

我怀疑这两个问题之间可能存在相关性。

下面的代码描述了我的洪水填充算法,使用堆栈:

。H:

米:

堆栈的此实现基于ObjFloodFill此处找到:

https://github.com/OgreSwamp/ObjFloodFill/blob/master/src/FloodFill.m

0 投票
1 回答
1204 浏览

ios - iOS FloodFill:UIImage vs Core Graphics

我正在考虑构建一个会大量使用洪水填充/油漆桶功能的应用程序。我要着色的图像就像着色书页一样;白色背景,黑色边框。我正在争论哪个更好用UIImage(通过操作像素数据)或绘制图像Core Graphics并更改触摸时的填充颜色。

使用UIImage,我无法正确解释视网膜图像;当我将上下文写入 new 时,它会破坏图像UIImage,但我可能会弄清楚。我打开提示虽然...

使用CoreGraphics,我不知道如何计算当用户触摸一个区域然后实际填充该区域时要填充的形状。我看过,但我没有找到成功的搜索。

总的来说,我相信最佳解决方案是使用CoreGraphics,因为它总体上会更轻,而且我不必为不同尺寸保留多个相同图像的副本。

想法?对我轻点!这是我的第一个应用程序和第一个 SO 问题;)

0 投票
2 回答
736 浏览

iphone - iPhone / iPad上的洪水填充性能问题

我正在开发一个绘画应用程序并实现洪水填充算法。这是我正在实现的代码: https ://github.com/OgreSwamp/ObjFloodFill/blob/master/src/FloodFill.m

和 viewController.h 文件

视图控制器.m 文件

如果用户持续使用该应用程序并且需要大约 20-30 秒来填充一小部分,则会出现性能问题,也会因内存错误而崩溃。

有没有人遇到过这种洪水填充问题以及如何解决?

0 投票
2 回答
419 浏览

java - 简单的java游戏:填充由移动光标绘制的图形

所以我正在做一个介绍 Java 课程的项目,似乎我选择了一些超出我能力范围的东西。:P
任何帮助将不胜感激。这就是我遇到的问题:

您有一个由玩家控制的光标(向前或转动 90°),它会留下一条彩色线。如果您设法越过自己的线并关闭任何形状的多边形(尽管只有直角),它的表面会将颜色变为您的线的颜色。

我可以检测到这种情况何时出现,但我有点迷失了如何实际填充刚刚关闭的正确多边形。我似乎无法想象一种算法可以涵盖任何可能的情况。

我查看了扫描线填充算法,但我认为当地图中已经填充了一些多边形时,它就会开始出现问题。如果我有办法在多边形内找到一个点,Floodfill算法将是完美的,但是,由于有许多不同的可能性,我想不出一个通用的规则。

我正在使用一个 2x2 整数数组,其中每种颜色都由一个数字表示。

有谁知道如何解决这个问题?

0 投票
1 回答
470 浏览

java - 这是一个 8 路洪水填充程序吗?

嘿,这可以正常工作,但是在将其与 4-way 进行比较后,我找不到任何差异...如果我将其交出,它会被认为是实现 8-way flood 算法的正确方法吗?一个是/否的答案就足够了,但我想在继续之前我会问专家

谢谢阅读

0 投票
3 回答
5533 浏览

c - 洪水填充算法 - 迷宫导航

我正在尝试实现一个版本的洪水填充算法,以帮助解决微型鼠标迷宫的最短距离路径。它的工作方式与常规洪水填充相同,只是每个相邻的未填充位置都将分配一个数字,表示该位置到起始位置的距离。每次算法移动到不同的单元格时,数字都会增加一。这是一个从左下角开始的没有墙的迷宫示例。

这是我当前的代码...

我遇到的问题是递归不是一次一步进行(有点模糊,但让我解释一下)。而不是检查所有方向然后继续算法将继续向北移动而不检查其他方向。似乎我想让其他递归调用以某种方式产生,直到检查其他方向。有没有人有什么建议?