Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 OpenCV填充等高线中的孔_Python_Opencv - Fatal编程技术网

Python OpenCV填充等高线中的孔

Python OpenCV填充等高线中的孔,python,opencv,Python,Opencv,我试图做的基本上与腐蚀/扩张相同,但我没有图像,而是有轮廓。通过这种方式,我试图填充轮廓中的孔状凹痕。(见下图-用红色绘制的轮廓;编辑:我已经绘制了填充轮廓,以显示外部和内部) 我知道approxPolyDP,我已经在使用它了,但是如果我给它一个更高的值,其他地方的细节就会丢失 因此,我想知道是否有类似于侵蚀/扩张的功能,或者我是否必须从轮廓生成图像,然后我可以使用它来精确地进行侵蚀/扩张或类似的操作 编辑:我目前拥有的是: 检测二值图像中的轮廓:courts=cv2.findContour

我试图做的基本上与腐蚀/扩张相同,但我没有图像,而是有轮廓。通过这种方式,我试图填充轮廓中的孔状凹痕。(见下图-用红色绘制的轮廓;编辑:我已经绘制了填充轮廓,以显示外部和内部)

我知道approxPolyDP,我已经在使用它了,但是如果我给它一个更高的值,其他地方的细节就会丢失

因此,我想知道是否有类似于侵蚀/扩张的功能,或者我是否必须从轮廓生成图像,然后我可以使用它来精确地进行侵蚀/扩张或类似的操作

编辑:我目前拥有的是:

  • 检测二值图像中的轮廓:
    courts=cv2.findContours(im、cv2.RETR\u外部、cv2.CHAIN\u近似值\u TC89\u L1)[0]
  • 近似轮廓:
    approxConts=[cv2.approxPolyDP(轮廓,0.002*cv2.arcLength(轮廓,真),真)用于轮廓中的cont]
    (一般来说,对于我的用例,0.002是一个很好的值,更高的值会导致细节丢失)
我现在想做的是类似于
cv2.腐蚀(cv2.diplate(轮廓,someKernel),someKernel)
,这显然不起作用,因为轮廓不是图像。因此,我需要一些类似的函数来放大轮廓,删除相互交叉的线,而只使用交点,然后再次收缩轮廓。我想要得到的是这样的东西:


请进一步澄清并显示一些代码。你的问题我不清楚。您想用蓝色填充整个图像吗?我看不到任何轮廓,除非你已经填充了它们。更大的图片和更多的背景信息会让你的问题更清楚。如果你画的是外部轮廓,而不是任何内部轮廓,那么就我所知,你必须画并填充它们,然后填充你所建议的任何其他孔。它们只是大纲。你可能正在寻找@Nathance,但这并不完全是我想要的,但我可能可以用它。。。我唯一的问题是,当我有一个形状像L的东西时,这就不太管用了