我想要做的基本上与腐蚀/扩张相同,但是我没有轮廓,而是轮廓。这样,我试图在轮廓中填充类似孔的凹痕。 (请参见下图-用红色绘制的轮廓;编辑:我将其绘制为填充以显示外部和内部)
我知道我已经使用过的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)
这样的东西,由于轮廓不是图像,它显然不起作用。因此,我需要一些类似的功能来放大轮廓,删除彼此交叉的线,而仅使用相交点,然后再次缩小轮廓。我想得到的是这样的: