OpenCV填充轮廓中的孔

我想要做的基本上与腐蚀/扩张相同,但是我没有轮廓,而是轮廓。这样,我试图在轮廓中填充类似孔的凹痕。 (请参见下图-用红色绘制的轮廓;编辑:我将其绘制为填充以显示外部和内部)

OpenCV填充轮廓中的孔

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

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

编辑:我目前拥有的是:

  • 检测二进制图像中的轮廓:contours = cv2.findContours(im,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_TC89_L1)[0]
  • 近似轮廓:approxConts = [cv2.approxPolyDP(contour,0.002*cv2.arcLength(contour,True),True) for cont in contours](对于我的用例,0.002通常是一个很好的值,更高的值会导致细节丢失)

我现在想做的是像cv2.erode(cv2.dilate(contour,someKernel),someKernel)这样的东西,由于轮廓不是图像,它显然不起作用。因此,我需要一些类似的功能来放大轮廓,删除彼此交叉的线,而仅使用相交点,然后再次缩小轮廓。我想得到的是这样的:

OpenCV填充轮廓中的孔

liweisb 回答:OpenCV填充轮廓中的孔

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3127780.html

大家都在问