Удаление дуги и заполнение прямоугольника с помощью opencv - PullRequest
0 голосов
/ 24 февраля 2019

Я использую OpenCV для преобразования данного изображения в результирующее изображение, как показано на прикрепленном изображении.Я использовал Highline для определения краев, но я не могу завершить прямоугольник / квадрат и удалить дуги.

enter image description here

Это исходное изображение.Original Image

Это то, чего я достиг, используя эрозию и расширение.enter image description here

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Сначала я не опубликовал это как ответ, потому что я не думаю, что он завершен, но, как вы просили код в комментариях, вот он.

import cv2
import numpy as np

img = cv2.imread("room.png", 0)
cv2.imshow("original", img)

kernel = np.ones((4,4),np.uint8)
dilation = cv2.dilate(img,kernel,iterations = 1)
cv2.imshow("dilated", dilation)

ret, thresh = cv2.threshold(dilation, 150, 255, cv2.THRESH_BINARY)
cv2.imshow("thresholded", thresh)

Это просто базовыйрасширение и использование факта, что разбавленные тонкие черные линии станут серыми, так что я могу применить порог.

Результат: result

Конечно, вы можете игратьнемного по параметрам, чтобы получить лучшие результаты, но вы не получите ожидаемый результат таким образом.

0 голосов
/ 25 февраля 2019

Вы хотите указать (x, y) конечных точек сегмента линии.

Выполнить Sobel или sepFilter2D поверх исходного изображения, чтобы выделить вертикальные и горизонтальные края отдельно.Вы также можете использовать HoughCircles , чтобы найти и стереть дверные дуги.Фильтр, превращающий три параллельные линии в одну жирную линию, безусловно, поможет вам обрабатывать окна.

Учитывая набор сегментов линий, которые имеют (приблизительно) метки x, y, идентифицируют пары сегментов, близкие к коллинеарному.и имеют соответствующий размер зазора, соответствующий двери.Слить их, заполняя пробел.Рендеринг сегментов на чистое изображение или, возможно, блеклую версию исходного изображения.

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