OpenCV填充轮廓中的孔

时间:2019-11-10 19:57:57

标签: python opencv

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

holes in contours

我知道我已经使用过的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)这样的东西,由于轮廓不是图像,它显然不起作用。因此,我需要一些类似的功能来放大轮廓,删除彼此交叉的线,而仅使用相交点,然后再次缩小轮廓。我想得到的是这样的:

filled holes

0 个答案:

没有答案