Извлечь текст из изображения с помощью MSER в Opencv python

Я хочу обнаружить текст на изображении с помощью mser и удалить все нетекстовые области. Используя приведенный ниже код, я смог обнаружить текст:

import cv2
import sys


mser = cv2.MSER_create()
img = cv2.imread('signboard.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vis = img.copy()
regions, _ = mser.detectRegions(gray)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
cv2.polylines(vis, hulls, 1, (0, 255, 0))
cv2.imshow('img', vis)
if cv2.waitKey(0) == 9:
    cv2.destroyAllWindows()

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


person Abhay Gupta    schedule 25.05.2017    source источник


Ответы (1)


Вы можете получить бинарное изображение, используя найденные вами контуры. Просто нарисуйте заполненные контуры на пустом изображении белым цветом.

mask = np.zeros((img.shape[0], img.shape[1], 1), dtype=np.uint8)
for contour in hulls:
    cv2.drawContours(mask, [contour], -1, (255, 255, 255), -1)

Примечание. См. официальный документы для получения дополнительной информации о drawContours

Затем вы можете использовать это для извлечения только текста:

text_only = cv2.bitwise_and(img, img, mask=mask)
person Sipho    schedule 25.05.2017