Извлечение стен из изображения в OpenCv - PullRequest
0 голосов
/ 27 мая 2018

У меня есть следующее изображение лабиринта:

Ввод:

image

Стены белые, а путь черный,Как я могу извлечь одну из стен в отдельном изображении в opencv?

Это вывод, который я хочу

Вывод:

Output

1 Ответ

0 голосов
/ 27 мая 2018

Вы можете использовать концепцию алгоритм заливки потока для этой проблемы.

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

Код:

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)

enter image description here

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)

enter image description here

cv2.imshow('fin', cv2.bitwise_not(cv2.bitwise_not(im_floodfill) + thresh))

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...