相关疑难解决方法(0)

用C编写的工作非递归填充算法?

我一直在努力找到一个有效的填充算法.在许多算法中,我只尝试过"递归线填充",其中一个行为完全符合它应该的主要警告,它偶尔会打击堆栈.:(

我已经尝试了很多我发现的非递归实现,并且它们都非常温和:要么在奇怪的地方留下空隙,要么泛滥整个区域(当它们应该被封闭时).

任何人都有一个用C语言编写的非递归填充工作源代码(或者c ++不是太大的OOP而且我可以很容易地解开)?

c algorithm flood-fill

17
推荐指数
5
解决办法
2万
查看次数

如何填写特定区域的图像颜色?

我想填充白色区域的颜色为基于油漆的应用程序,所以请给我建议如何做这项工作..

在此输入图像描述

android image paint bitmap image-processing

13
推荐指数
1
解决办法
2万
查看次数

使用堆栈填充洪水

我在Java中使用递归Flood填充算法来填充图像的某些区域.使用非常小的图像可以正常工作,但是当de image变大时,JVM会给出Stack Over Flow Error.

这就是我必须使用我自己的堆栈使用Flood Fill重新实现该方法的原因.(我认为这是在这种情况下做到这一点的最好方法)

任何人都可以解释我如何编码吗?(如果你手边没有代码,算法的伪代码就可以了)

我在互联网上看了很多,但我还不太清楚.

编辑:我添加了我的递归代码

public void floodFill(int x, int y, Color targetColor,Color replacementColor) {

    if (img.getRGB(x, y) != targetColor.getRGB()) return;

    img.setRGB(x, y, replacementColor.getRGB());
    floodFill(x - 1, y, targetColor, replacementColor);
    floodFill(x + 1, y, targetColor, replacementColor);
    floodFill(x, y - 1, targetColor, replacementColor);
    floodFill(x, y + 1, targetColor, replacementColor);

    return;

}
Run Code Online (Sandbox Code Playgroud)

谢谢!

java image-manipulation flood-fill

12
推荐指数
2
解决办法
2万
查看次数

如何在Android中使用泛洪填充算法?

我是Android编程的新手,最近我尝试编写一个简单的应用程序,仅用于练习!在这一个中,我想在用户的点击上为图像着色,但我不知道如何启动它.我已经阅读了不同的主题,说使用"Flood Fill"算法.我在网上发现了它,但我不知道如何将它放入我的简单应用程序中.

我发现的代码:

private void FloodFill(Bitmap bmp, Point pt, int targetColor, int replacementColor) 
{
   Queue<Point> q = new LinkedList<Point>();
   q.add(pt);
   while (q.size() > 0) {
       Point n = q.poll();
       if (bmp.getPixel(n.x, n.y) != targetColor)
           continue;

    Point w = n, e = new Point(n.x + 1, n.y);

    while ((w.x > 0) && (bmp.getPixel(w.x, w.y) == targetColor)) {
        bmp.setPixel(w.x, w.y, replacementColor);
        if ((w.y > 0) && (bmp.getPixel(w.x, w.y - 1) == targetColor))
            q.add(new Point(w.x, w.y - 1));
        if ((w.y < bmp.getHeight() - …
Run Code Online (Sandbox Code Playgroud)

java android

12
推荐指数
2
解决办法
1万
查看次数

Android:如何做这个框架油漆?

我有一些静态图像如下:

在此输入图像描述

现在,我想要的是,当我触摸脸部或手部时,所选择的颜色应该填充在该皮肤部分上.

见下面的结果图:

在此输入图像描述

那么如何获得上面的结果?重做和撤消功能也应该存在.

我尝试使用FloodFill颜色,但这样做我只能对特定部分进行着色.因为FloodFill只填充颜色,直到相同的pixwl颜色出现.如果触摸位置像素颜色发生变化,它将不会填充颜色.

所以Usinf FloodFill我得到了如下图像的结果,如果我按下手,那么只有手部分将填充颜色,而不是它我想要填充另一只手和脸的颜色. 在此输入图像描述

所以请在这种情况下帮助我.

EDITED

一些答复后,我得到了像解决这一个.

但仍然存在内存问题.它消耗大量内存来绘制颜色.所以,任何人都可以帮助我吗?

android draw flood-fill android-canvas

7
推荐指数
1
解决办法
5447
查看次数

Android绘图填充工具

我正在为Android制作一个绘图应用程序,我需要一些帮助添加填充工具.

我希望该工具能够填充填充,并且在Microsoft Paint中表现得像在手机上一样.

我有一个自定义视图,在画布上绘制路径.我为不同的笔和画笔绘制了不同的路径,我允许用户选择线条粗细和颜色.

当我做:

paint.setStyle(Paint.Style.FILL);
Run Code Online (Sandbox Code Playgroud)

而且我画画,我没有得到我想要的填充.

我已经得到了一些使用"Flood Fill Algorithm"的建议,但我无法弄清楚如何在我的代码中实现它.

我在哪里可以看到我想要做的一个例子?有没有人有示例代码向我展示如何使用我的android视图使该工具工作?

编辑:

CartoonView.java:

    public class CartoonView extends View {
        ArrayList<Paint> paints = new ArrayList<Paint>();
        ArrayList<Path> paths = new ArrayList<Path>();
        int color;
        int thickness;
        boolean pencilSelected;

    public boolean isPencilSelected() {
        return pencilSelected;
    }

    public void setPencilSelected(boolean pencilSelected) {
        this.pencilSelected = pencilSelected;
    }

    public ArrayList<Paint> getPaints() {
        return paints;
    }

    public void setPaints(ArrayList<Paint> paints) {
        this.paints = paints;
    }

    public ArrayList<Path> getPaths() {
        return paths;
    }

    public void setPaths(ArrayList<Path> paths) {
        this.paths …
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-view

6
推荐指数
1
解决办法
2448
查看次数