Извлечение горизонтальных и вертикальных линий из изображения - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу извлечь горизонтальные и вертикальные линии в 2 масках для прикрепленного изображения.

Я пробовал морфологические операции, чтобы сделать это,

horizontalStructure = cv.getStructuringElement(cv.MORPH_RECT, (horizontal_size, 1))
verticalStructure = cv.getStructuringElement(cv.MORPH_RECT, (1, verticalsize))

Но проблема, он обнаруживает линия как прямоугольник, а затем dr aws это в виде 2 линий, представляющих 2 стороны прямоугольника.

Есть идеи, чтобы это исправить?

Изображение:
img

Горизонтальный результат:

h

Вертикальный результат:

v


РЕДАКТИРОВАТЬ: Это еще одно изображение у меня:

img

1 Ответ

4 голосов
/ 11 февраля 2020

Что вы делали со своими структурирующими элементами? Где остальная часть вашего кода?

Я бы предложил использовать морфологическое раскрытие, используя cv2.morphologyEx, например так:

import cv2
import numpy as np
from skimage import io              # Only needed for web reading images

# Web read image; use cv2.imread(...) for local images
img = cv2.cvtColor(io.imread('https://i.stack.imgur.com/jnCvG.jpg'), cv2.COLOR_RGB2GRAY)

# Get rid of JPG artifacts
img = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY)[1]

# Create structuring elements
horizontal_size = 11
vertical_size = 11
horizontalStructure = cv2.getStructuringElement(cv2.MORPH_RECT, (horizontal_size, 1))
verticalStructure = cv2.getStructuringElement(cv2.MORPH_RECT, (1, vertical_size))

# Morphological opening
mask1 = cv2.morphologyEx(img, cv2.MORPH_OPEN, horizontalStructure)
mask2 = cv2.morphologyEx(img, cv2.MORPH_OPEN, verticalStructure)

# Outputs
cv2.imshow('img', img)
cv2.imshow('mask1', mask1)
cv2.imshow('mask2', mask2)
cv2.waitKey(0)
cv2.destroyAllWindows()

Я получаю следующие две маски , которые выглядят довольно хорошо для меня:

Mask 1

Mask 2

Надеюсь, что помогает!

----------------------------------------
System information
----------------------------------------
Platform:    Windows-10-10.0.16299-SP0
Python:      3.8.1
NumPy:       1.18.1
OpenCV:      4.2.0
----------------------------------------
...