答案 0 :(得分:2)
您可以使用flood fill algorithm的概念来解决此问题。
在输入图像中,请注意“墙壁”是如何区分的,并且与黑色像素(路径)相邻。当您在此“墙”内的任何一个像素处初始化算法时,它们将与图像的其余部分分开。
<强>代码:强>
path = r'C:\Users\Desktop'
filename = 'input.png'
img = cv2.imread(os.path.join(path, filename))
cv2.imshow('Original', img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 100, 255,cv2.THRESH_BINARY_INV)
cv2.imshow('thresh1', thresh)
im_floodfill = thresh.copy()
h, w = thresh.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
cv2.floodFill(im_floodfill, mask, (0,0), 255)
cv2.imshow('im_floodfill', im_floodfill)
cv2.imshow('fin', cv2.bitwise_not(cv2.bitwise_not(im_floodfill) + thresh))
上还有另一个详细介绍此功能的例子