Обнаружение фигур, которые не являются одним подключенным компонентом в OpenCV - PullRequest
0 голосов
/ 05 мая 2019

Код должен определять буквы и цифры с помощью OpenCV. Проблема в том, что он не может обнаружить буквы из двух частей, например, i, j или арабские буквы ب ، ت ، ث ، ج ، خ ، ض и т. Д.

Это мой код:

image = cv2.imread('output.png')

height, width, depth = image.shape

# resizing the image to find spaces better
image = cv2.resize(image, dsize=(width * 5, height * 4), interpolation=cv2.INTER_CUBIC)
# grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# binary
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)

# dilation
kernel = np.ones((5, 5), np.uint8)
img_dilation = cv2.dilate(thresh, kernel, iterations=1)

# adding GaussianBlur
gsblur = cv2.GaussianBlur(img_dilation, (5, 5), 0)

# find contours
ctrs, hier = cv2.findContours(gsblur.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

m = list()
# sort contours
sorted_ctrs = sorted(ctrs, key=lambda ctr: cv2.boundingRect(ctr)[0])
pchl = list()
dp = image.copy()
for i, ctr in enumerate(sorted_ctrs):
    # Get bounding box
    x, y, w, h = cv2.boundingRect(ctr)
    cv2.rectangle(dp, (x - 10, y - 10), (x + w + 10, y + h + 10), (90, 0, 255), 9)

Что мне нужно изменить, чтобы обнаружить фигуры из нескольких частей?

1 Ответ

0 голосов
/ 10 мая 2019

Скоростное встроенное оптическое распознавание символов - задача не из легких, на самом деле не с точки зрения распознавания отдельных символов, а из-за правильной сегментации отдельных символов.

Популярный подход в этой области состоит в том, чтобы идентифицировать каждый элемент conex, изолировать их и построить некоторый алгоритм ассоциации. В основном у вас будет куча частей персонажей, некоторые завершены символы некоторые не . Для этих незавершенных предметов (которые не могут быть классифицированы как символ самостоятельно) проверьте соседство этого предмета, чтобы построить символ с предметами вокруг него (могут ли они быть левыми или правыми, или даже немного выше или ниже). Обратная связь классификатора имеет решающее значение для задачи сегментации.

Вы найдете этот подход в литературе под названием: Неявная избыточная сегментация или Сегментация на основе распознавания . Подробнее в , и , , а для арабских символов - в , статье.

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