Вы можете использовать концепцию алгоритм заливки потока для этой проблемы.
Во входном изображении обратите внимание, как «стены» различаются и граничат с черными пикселями (путь).Когда вы инициализируете алгоритм на любом одном пикселе в этой «стене», они будут отделены от остальной части изображения.
Код:
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))

Тамдругой пример, детализирующий эту функцию для ЭТОГО ПОЧТЫ