安卓:如何做这个裱糊漆?
我有一些静态图像,如下: 现在,我想要的是,当我触摸面部或手时,所选颜色应在那个皮肤部分填充. 请参见下图结果: 那么如何获得上面的结果? 重做和撤消功能也应该在那里. 我已经尝试了洪水般的颜色,但是这样做只能在尖端部分中做颜色.由于洪水仅填充颜色,直到同一pixwl颜色出现.如果接触位置像素颜色获得更改,则不会填充上面的颜色. 所以我得到了下面图像的结果,如果我按在手上,那么只有手部部分会充满颜色,而不是我要填充颜色,另一只手也要面对. 所以在这种情况下请帮助我. 编辑 回复后,我得到了解决方案,例如但仍然存在记忆问题.它消耗了很多记忆来绘制颜色.所以请任何人帮助我吗? 解决方案 您可以以实际的方式将完整的图像涂上颜色,当您用颜色填充某个区域时,它将替换所有颜色指定的区域. 外行的术语: 用户将单击大纲的手 将使用另一个图像进行单击位置,并具有完美的颜色编码区域.让我们称其为这种情况.所有的皮肤区域都具有相同的颜色.
4 2024-02-13
编程技术问答社区
无法从位图生成纹理
我正在使用floodfill算法用用户触摸填充特定颜色的黑色白色图片. 我用这个问题使用洪水算法:如何在android? 问题是某个时候(我想快速填充乳清),我得到Cannot Generate Texture From Bitmap错误,mBitmap.getPixel(x, y)返回0,填充将停止! 我可以根据此链接的最后一篇文章来使用copyPixelsToBuffer ( pictureBuffer )而不是getPixel()方法:http://www.developpez.net/forums/d1338782/java/general-java/java-mobiles/android/openglrenderer-cannot-genore-texture-bitmap/ ,但我不知道如何更改当前代码. 解决方案 我根据Shubhadeep Chaudhuri答案解决了以下链接: 有人移植了J. Dunlap的排队线性洪水填充算法 在这里.
4 2024-02-12
编程技术问答社区
在安卓系统上进行水浸式填色
我只是尝试使用洪水般的课程,发现着色奇怪的问题. 让我们从代码开始: public class FloodFill { public void floodFill(Bitmap image, Point node, int targetColor, int replacementColor) { int width = image.getWidth(); int height = image.getHeight(); int target = targetColor; int replacement = replacementColor; if (target != replacement) { Queue queue = new LinkedList(); do { int x = node.x; int y
0 2024-02-07
编程技术问答社区
使用QueueLinearFloodFillAlgorithm在着色中留下的空白处
我正在尝试在Android中实施洪水填充算法.它的工作速度很慢,所以我根据此链接尝试了队列线性洪水填充算法 如何使用Android中的洪水填充算法? 它正在快速工作,但部分没有完全彩色.这张图片中的边缘状剩下一些白色空间. 我使用以下代码: public class QueueLinearFloodFiller { protected Bitmap image = null; protected int[] tolerance = new int[] { 0, 0, 0 }; protected int width = 0; protected int height = 0; protected int[] pixels = null; protected int fillColor = 0; protected int[] startColor = new int[] { 0, 0, 0 }; p
0 2024-02-05
编程技术问答社区
在安卓系统的位图上填充颜色
根据搜索条的进度,我如何在特定区域中填充特定区域的颜色(即燃料图像). 我尝试了以下解决方案,但根据我的要求没有太大帮助. 请在下面找到更多参考. 解决方案 您也可以在所拥有的图层上绘制一个位图. 只需添加与栏(或您所拥有的任何内容)相同的尺寸的位图.然后添加颜色并说出在栏中上色的幅度. 示例: // making our bitmap and canvas Bitmap bmResult = Bitmap.createBitmap(barWidth, 75, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmResult); paint.setShader(new LinearGradient(widthToFill, 75, widthToFill, 75, 0xFF97ca3e,
2 2024-01-30
编程技术问答社区
安卓系统使用洪流填充算法出现内存不足的异常
在您的建议之后,我得到了工作代码: public class FingerPaint extends Activity { private RelativeLayout drawingLayout; private MyView myView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myView = new MyView(this); setContentView(myView); drawingLayout.addView(myView); } public class MyView extends View { private Paint paint; private Path path; Bitmap mBitmap; ProgressDialog
0 2024-01-30
编程技术问答社区
安卓泛滥填充算法
有人知道用于洪水填充的迭代和高效算法吗? 或有什么方法可以实现递归floodfill算法而没有堆栈溢出错误? 尝试了一个 @ 使用堆栈的洪水填充 但是我找不到一种处理白色和黑色图像的方法. 解决方案 此算法对我有用. private void FloodFill(Bitmap bmp, Point pt, int targetColor, int replacementColor) { Queue q = new LinkedList(); 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);
2 2024-01-27
编程技术问答社区
Python:扫雷器的填埋算法
我正在Python上写一款扫雷游戏,目前正在尝试实施洪水算法.这就是我写的: def floodfill(CURRENT_BOARD, row, col): count = count_mines(row, col) if count in POSSIBLE_MINE_NUMBERS: CURRENT_BOARD[row][col] = str(count) + ' ' else: if CURRENT_BOARD[row][col] == 'P ': CURRENT_BOARD[row][col] = 'P ' if row > 0: floodfill(CURRENT_BOARD, row - 1, col) if row
0 2024-01-23
编程技术问答社区
矩阵中1'的群/岛的数量。定义的澄清
我正在研究/* * Given a matrix of 0's and 1's, * find the number of groups of 1's in the matrix. * * A group of 1's is defined as all ADJACENT 1's * vertically or horizontally but not diagonally. */ public class Islands { /** * main entry point */ public static void main(String[] args) { int[][] A = new int[4][4]; int totalNumGroups = 0; int curCnt = 0; /* * Initialize 2-dimensional array with 1's and 0's (randomly!) * For testing/verification purpose
0 2024-01-23
编程技术问答社区
使用 ASCII 艺术和递增字符填充空间的 C 语言递归填充算法
我有一个作业,我需要编写递归洪水填充算法,以填充带有增量字符的ASCII艺术空间.现在,我进行了无尽的研究,并认为我了解了该算法的基本基础.但是,当我运用我学到的知识时,输出不会产生我想要的东西.以下是程序的轮廓 在"*"代表墙壁的房间内找到" a".您可以假设总会有一个" A". 从A开始,然后用增加的字符填充房间,直到Z到Z,并在达到Z时继续进行Z.示例输出: ***** *DCB* ***A* *DCB* ***** 下面是一个示例程序,因为原始程序要大得多. #include #include typedef struct room{ char **array; int rows; int cols; } room; void printRoom(room room); int *findA(room room); void floodFill(room room, int x,
2 2024-01-23
编程技术问答社区
洪水填充算法
IM在带有Turbo C ++ C的简单图形库中工作,因为我正在开发非常原始的油漆样式程序,因此每个人都可以很好地工作,但是我无法使洪水填充算法工作.即时通讯使用四种洪水填充算法,首先是我使用递归版本尝试的,但它仅适用于小区域,填充大面积使其崩溃;阅读我发现实现了它的明确堆栈版本可以解决该问题,但我没有真正看到它. 我已经开发了这样的堆栈: struct node { int x, y; struct node *next; }; int push(struct node **top, int x, int y) { struct node *newNode; newNode = (struct node *)malloc(sizeof(struct node)); if(newNode == NULL) //If there is no more memory return 0; newNode->x = x
2 2024-01-23
编程技术问答社区
洪水填充算法导致StackOverFlowError
我正在使用Java编程简单的油漆应用程序.我正在尝试将洪水填充算法的递归实现作为我的"水桶填充"工具. 但是,这个始终给了我StackOverFlowError. (无论我使用的"铲斗填充工具"的区域多么小). 编辑:更改代码以使其更有效.仍然相同的错误. 这是代码: public void floodFill(int x, int y, Color targetColor, Color replacementColor) throws AWTException{ pixelColor = robot.getPixelColor(x,y); g.setColor(replacementColor); g.fillRect(x, y, 1, 1); if(robot.getPixelColor(x-1, y).equals(targetColor)) floodFill(x-1, y, targetColor,
2 2024-01-23
编程技术问答社区
2D阵列中的总水容量,代表地形图
我最近在一次采访中问了这个问题,我不知道如何实施它.我希望有人可以将我指向如何解决这个问题的正确方向. 问题陈述:给定2D整数阵列可以找到可以持有的总水.数字代表地图中的高程(即山的高度).水从最高山流到山谷(高度最高至最低高度). 示例1:这是5 x 3矩阵. 10是最高峰.您可以假设水流向下流动,并在坐标(3, 1)的图2上开始收集.该瓷砖将收集 7 水的水.在溢出到坐标(2, 0) or (3, 0)处的高度9的邻近瓷砖之前,并流入海洋(假设边缘被海洋包围).因此,该地图收集的总水为 7 . 9 9 9 9 10 9 9 9 9 9 2 10 10 10 10 示例2: 9 9 9 9 9 9 9 10 9 8 2 4 9 9 9 10 3 5 9 2 2 10 3 5 10 10 10 10 9 9 在这种情况下,水可以在以下坐标中收集: (3,1)&(
16 2024-01-23
编程技术问答社区
哪种洪水填充算法更适合性能?
我正在尝试实现一种洪水填充的算法.问题是我不确定我应该以何种方式实施它,例如递归 - 非恢复性. 我知道每个都有其缺陷,但其中一个必须比另一个缺陷更快.递归每次分配4个新点时,在堆栈上打开新功能. 非著作的示例: Stack stack = new Stack(); stack.Push(q); while (stack.Count > 0) { Point p = stack.Pop(); int x = p.X; int y = p.Y; if (y h - 1 || x w - 1) continue; byte val = vals[y, x]; if (val == SEED_COLOR) { val
12 2024-01-23
编程技术问答社区
快速填充/洪水填充算法
我需要一种洪水填充算法,以用各种颜色和填充图案填充现有的光栅形状.据我所知,QuickFill算法是进行洪水填充的最佳方法.我找到了许多实现,但是它们都在C ++中并使用Windows SDK功能.问题是我需要.NET实现. 如果更糟糕的是,我可以编写一个新的实现,但是我宁愿使用现有的实现(希望没有错误).是否有人知道C#/vb.net中的现有洪水填充实现? 解决方案 我非常喜欢与 aforge Library 两者仅是4个定向. 如果您需要其他实现,则存在两个代码项目文章 C#中的洪水填充算法和gdi+和 queue-linear flooder填充:快速洪水填充算法. ,如果您想挖掘代码并学习,则有 paint .net .net .net 出色的洪水填充实施.
0 2024-01-22
编程技术问答社区
改变FloodFill-Algorithm以获得两个数据点的Voronoi领土?
我得到了两个点的网格.我想计算每个点可以在另一个点到达的量.目前,我实施了一个洪水 - 算法,可以计算出可以达到的正方形量. 我如何更改该算法以进行两个点或至少一个接一个的"洪水"? 解决方案 您的意思是"每个点可以在另一个角度到另一点"? 在我看来,您需要BF搜索.使用这样的FIFO队列: 让P1和P2成为两个点的位置. 令F为队列中的第一个元素,而L则是最后一个元素.最初f = 0,l =1.令q为队列. Q[f] = p1 Q[l] = p2 while ( f
0 2024-01-22
编程技术问答社区
如何在一个二维矩阵中找到孔?
我知道标题似乎是模棱两可的,因此,我附上了一个图像,这将有助于清楚地理解问题.我需要在白色区域内找到孔.一个孔被定义为一个或多个在白色区域内具有" 0"的单元).我想出了一个非常幼稚的解决方案: 1.在整个矩阵中搜索具有值" 0"的单元格 2.当遇到这样的单元格(黑色一个)时,运行DFS(洪水填充)并检查我们是否可以触摸主矩形区域的边界 3.如果我们可以在DF期间触摸边界,那么它不是一个孔,如果我们无法达到边界,则将其视为一个孔 现在,此解决方案有效,但我想知道此问题是否还有其他有效/快速解决方案. 请让我知道您的想法.谢谢. 解决方案 带有洪水,您已经拥有:沿着矩阵的边界运行并泛滥,即 将所有零(黑色)更改为2(填充的黑色),然后将所有零(填充的白色)更改为3(填充的白色);忽略来自早期洪水的2和3. 例如,使用矩阵,您是从左上角开始的,然后洪水泛滥为11区的区域.然后,您向右移动,并找到一个刚刚填充的黑色单元.再次向右移动,找到一个非常大的白色区域(实际上是
0 2024-01-22
编程技术问答社区
如何以最佳方式解决补水难题?
我喜欢玩益智游戏Flood-it,可以在线玩: 它也可以作为igoogle小工具可用.目的是为整个董事会填充最少的连续洪水填充. 我正在尝试编写一个可以最佳解决这个难题的程序.解决此问题的最佳方法是什么?理想情况下,我想使用 a*算法,但是我不知道应该估计剩余步骤数的功能是什么.我确实编写了一个程序,该程序进行了深度-4蛮力搜索以最大程度地提高填充区域.它运作良好,击败了我解决难题,但我对该算法并不完全满意. 有什么建议吗?预先感谢. 解决方案 作为启发式,您可以构造一个图形,每个节点代表一组连续的相同颜色正方形,每个节点都连接到触摸的节点. (每个边缘加权为1).然后,您可以使用途径探测算法来计算从左上角到所有其他节点的"距离".然后,通过使用其他5种颜色中的每种洪水进行洪水填充的结果,确定哪种颜色最小化了"最远"节点的距离,因为那可能是您的瓶颈. 将计算的结果添加到到目前为止所做的填充数量中,并将其用作您的A*启发式. 其他解决方案 一种天真的
4 2024-01-22
编程技术问答社区
在Python中填充洪水
我完全是新手的洪水填充算法.我从Wikipedia( .但并没有变得更加聪明.我正在尝试在以下情况下使用它.我有一个矩阵: matrix = [["a", "a", "b", "a", "a", "b"], ["a", "b", "b", "a", "b", "b"], ["b", "a", "b", "a", "a", "b"], ["b", "a", "b", "a", "b", "b"], ["a", "a", "b", "a", "a", "a"], ["a", "b", "b", "a", "a", "b"]] 然后,我让用户从矩阵中决定一个点.如果在那个给定点"b"什么也没做.在另一种情况下,如果在给定点为"a",我想在洪水填充算法的帮助下更改给定点,并将所有周围或与"a" 连接到" C". 例如,假设用户决定矩阵[0] [0].那么新矩阵将是: matr
2 2024-01-22
编程技术问答社区
洪水填充算法的非递归实现?
我正在Java中的一个小型绘图应用程序.我正在尝试通过实现洪水填充算法来创建一个"桶装"工具. 我尝试使用递归实现,但这是有问题的.无论如何,我在网络周围搜索,似乎为此,建议使用该算法的A 非恢复实现. 所以我问你: 您能描述 非追回性洪水填充算法的实现吗?一个实际的代码示例,一些伪代码,甚至是一般说明. 我正在寻找最简单的,或您可以想到的最有效的实现. (不必特定于Java). 谢谢 解决方案 我假设您有某种网格,您可以在其中收到位置的坐标,从您想填充该区域. 递归洪水填充算法是DFS.您可以进行BFS将其转换为非捕获性. 基本上,在两个算法中,这个想法都是相似的.您有一个袋子,其中保留了尚未看到的节点.您从袋子上取出一个节点,然后将节点的有效邻居放回袋中. 如果袋子是堆栈,您会得到DFS.如果是队列,您会得到BFS. 伪代码大致是这样. flood_fill(x,y, check_validity) //her
4 2024-01-22
编程技术问答社区