Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.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
如何使用opencv python填充多边形_Python_Opencv - Fatal编程技术网

如何使用opencv python填充多边形

如何使用opencv python填充多边形,python,opencv,Python,Opencv,我想用白色填充这些多边形,这个操作通过一个循环在整个图像上重复,所以我想知道可以使用python中的opencv来执行这个操作的语法和函数 这是我的输入图像 我使用了以下函数,结果如下: cv2.floodFill(imo,None,(i,j),255) 但我的问题是,经过一定数量的多边形后,它会给整个图像带来白色闪光,我不知道如何修复它 您可以使用填充轮廓。从中,如果厚度参数为负值(厚度=CV_填充或厚度=-1),则将填充轮廓。例如,使用白色填充轮廓 cv2.drawContours(im

我想用白色填充这些多边形,这个操作通过一个循环在整个图像上重复,所以我想知道可以使用python中的opencv来执行这个操作的语法和函数 这是我的输入图像

我使用了以下函数,结果如下:

cv2.floodFill(imo,None,(i,j),255)
但我的问题是,经过一定数量的多边形后,它会给整个图像带来白色闪光,我不知道如何修复它

您可以使用填充轮廓。从中,如果
厚度
参数为负值(
厚度=CV_填充
厚度=-1
),则将填充轮廓。例如,使用白色填充轮廓

cv2.drawContours(image, [c], -1, (255,255,255), -1)

因此,我们的想法是使用
cv2.findContours()
找到所需的轮廓,然后使用
cv2.drawContours()
填充它。为了您的形象:


如果您不坚持使用opencv,那么对于二进制图像,您是否提供了这些空多边形,或者您是否自己创建它们,例如使用?如果是后者,只需将
厚度
设置为
填充
。否则,您可能需要事先使用来查找这些多边形。(然后,您也可以使用例如。)没有这些空多边形是我自己创建的,因此我认为usinf floodfill或fillpoly可以完成此过程,但我的问题是此操作中使用的掩码???@AhmedHabashi那么,请提供代码,您使用该代码创建和绘制多边形。提出可能的改进建议比重新编写解决方案更容易,因为这样可能不适合您现有的代码。@HansHirse好的,我通过发布部分算法来编辑我的问题,因为这些函数的定义超过250行,其主要功能是围绕某个点绘制多边形非常感谢。。这就是我想要的解决方案
cv2.drawContours(image, [c], -1, (255,255,255), -1)
import cv2

image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY)[1]
cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]

for c in cnts:
    cv2.drawContours(image, [c], -1, (255,255,255), -1)

cv2.imshow('image', image)
cv2.waitKey()