Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 切换泛光填充颜色(黑色或白色取决于选定的像素颜色)_Python_Opencv_Flood Fill - Fatal编程技术网

Python 切换泛光填充颜色(黑色或白色取决于选定的像素颜色)

Python 切换泛光填充颜色(黑色或白色取决于选定的像素颜色),python,opencv,flood-fill,Python,Opencv,Flood Fill,我正在编写一个简单的程序,通过单击图像的不同区域,逐渐填充(使用泛光填充)图像(带有随机白色矩形的黑色背景),使其完全变为白色。顺利完成 所以我想通过在填充白色和黑色之间切换来让它更有趣。如中所示,如果我单击的像素是白色区域的一部分,请将其填充为黑色。否则,如果它是黑色区域的一部分,请将其填充为白色 但是,在我将一些框更改为白色后,它拒绝在随后的单击后更改为黑色(无法切换回颜色)。此外,由于我的矩形是用3或4像素厚的线绘制的,在将所有线更改为黑色后,似乎仍“记住”这些线存在,因此当我单击某些暗区

我正在编写一个简单的程序,通过单击图像的不同区域,逐渐填充(使用泛光填充)图像(带有随机白色矩形的黑色背景),使其完全变为白色。顺利完成

所以我想通过在填充白色和黑色之间切换来让它更有趣。如中所示,如果我单击的像素是白色区域的一部分,请将其填充为黑色。否则,如果它是黑色区域的一部分,请将其填充为白色

但是,在我将一些框更改为白色后,它拒绝在随后的单击后更改为黑色(无法切换回颜色)。此外,由于我的矩形是用3或4像素厚的线绘制的,在将所有线更改为黑色后,似乎仍“记住”这些线存在,因此当我单击某些暗区域时,偶尔该区域(由那些不可见的“先前”线包围)会变成白色

我已尝试打印像素颜色,以确认拾取的颜色确实是白色或黑色,但泛光填充没有使用正确的替代颜色(由我的if/else循环写入)

好吧,我希望以后每次点击一个黑色区域都会产生白色,反之亦然,但事实并非如此。 当它切换回白色时,它似乎被已经变为黑色的不可见线所包围

以下是随附的样本结果。

不仅更新图像,还更新
遮罩

在输出时,与图像中的填充像素相对应的遮罩中的像素被设置为1或在标志中指定的值,如下所述。因此,可以在多次调用函数时使用同一掩码,以确保填充区域不重叠

正如你所描述的,这对我很有效。如果您根本不需要掩码,您可以编写

cv.floodFill(img, None, (x, y), ...)
这也适用于我,但我没有发现任何证据表明
None
mask参数对于
floodFill()
是合法的。如果您在任何权威来源中发现答案是否合法,请通知my更新答案。

不仅更新图像,而且更新
掩码

在输出时,与图像中的填充像素相对应的遮罩中的像素被设置为1或在标志中指定的值,如下所述。因此,可以在多次调用函数时使用同一掩码,以确保填充区域不重叠

正如你所描述的,这对我很有效。如果您根本不需要掩码,您可以编写

cv.floodFill(img, None, (x, y), ...)

这也适用于我,但我没有发现任何证据表明
None
mask参数对于
floodFill()
是合法的。如果您在任何权威来源发现答案是否合法,请通知我更新答案。

非常感谢您的回答。我认为最重要的是这句话。“floodFill()不仅更新图像,还更新遮罩。”一旦建立,它解释了填充过程的不稳定行为。正如你所建议的,我已经改为“无”作为我的固定面具,它解决了这种行为。另外,在完成这个“游戏”之后,我才意识到我的游戏的正确结果是相当“无聊”的lol。万分感谢!非常感谢你的回答。我认为最重要的是这句话。“floodFill()不仅更新图像,还更新遮罩。”一旦建立,它解释了填充过程的不稳定行为。正如你所建议的,我已经改为“无”作为我的固定面具,它解决了这种行为。另外,在完成这个“游戏”之后,我才意识到我的游戏的正确结果是相当“无聊”的lol。万分感谢!
cv.floodFill(img, None, (x, y), ...)