Нахождение контуров из двух частей письма - PullRequest
0 голосов
/ 05 мая 2018

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

image

Я написал этот код:

MIN_CONTOUR_AREA = 10   
img = cv2.imread("alphabets.png")     
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)    
blured = cv2.blur(gray, (5,5), 0)    
img_thresh = cv2.adaptiveThreshold(blured, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
imgContours, Contours, Hierarchy = cv2.findContours(img_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for contour in Contours:
    if cv2.contourArea(contour) > MIN_CONTOUR_AREA:
        [X, Y, W, H] = cv2.boundingRect(contour)
        cv2.rectangle(img, (X, Y), (X + W, Y + H), (0,0,255), 2)
cv2.imshow('contour', img)

Но код выше имеет такой вывод: результат

image

Что я могу сделать, чтобы найти контур для букв, которые не являются непрерывными, как «я» или арабские буквы?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

У меня есть эта проблема. Я исправляю это так. добавить этот код:

dst = cv2.Canny(gray, 0, 150)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)    
  dst = cv2.Canny(gray, 0, 150)
blured = cv2.blur(dst, (5,5), 0)    
img_thresh = cv2.adaptiveThreshold(blured, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)
imgContours, Contours, Hierarchy = cv2.findContours(img_thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for contour in Contours:
    if cv2.contourArea(contour) > MIN_CONTOUR_AREA:
        [X, Y, W, H] = cv2.boundingRect(contour)
        cv2.rectangle(img, (X, Y), (X + W, Y + H), (0,0,255), 2)
cv2.imshow('contour', img)
0 голосов
/ 05 мая 2018

Перед нахождением контуров вы можете использовать несколько методов сегментации:

rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (30, 10))
threshed = cv2.morphologyEx(img_thresh, cv2.MORPH_CLOSE, rect_kernel)

enter image description here

и после применения cv2.findContours результат будет таким:

enter image description here

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