обнаружение символов и обрезка изображения с использованием opencv python

У меня есть проект, в котором я должен определить бенгальские числа по изображению. Я решил провести эксперимент, как числа с пробелами и без пробелов. Моя программа python может обнаружить все числа из изображения с пробелами.

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

вот мой код

import cv2

image = cv2.imread("number.png")
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) 
_,thresh = cv2.threshold(gray,70,255,cv2.THRESH_BINARY_INV) 
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
dilated = cv2.dilate(thresh,kernel,iterations = 0) 
_,contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) 

i=5
for contour in contours:

    [x,y,w,h] = cv2.boundingRect(contour)

    cv2.imwrite(str(i)+".jpg",image[y:y+h,x:x+h])
    i=i+1

Сначала я использовал расширение для поиска контуров, но это не сработало для числа без пространственного изображения. Затем я использую непосредственно обмолотый вывод, и после этого я получил большую часть чисел, но я не мог их идеально вырезать, потому что область контура определяет число с некоторой частью другого числа. Хотя на втором изображении не было места, но все же 2 числа не касались друг друга. Так почему такой вывод?

С пробелом:

с пробелом

Без пробела:

без пробела


person dip deb    schedule 12.10.2016    source источник
comment
не могли бы вы загрузить полученные изображения, в которых прямоугольники перекрываются с входным изображением.   -  person v.coder    schedule 12.10.2016
comment
drive.google.com/open?id=0B6mLS-uqtbd1RFBLamNmUmFaeUU   -  person dip deb    schedule 13.10.2016


Ответы (1)


К сожалению, я не заметил, что когда я вырезал прямоугольную часть, я добавлял x:x+h вместо x:x+w. Это основная проблема. После модификации программа заработала нормально. Извините.

person dip deb    schedule 14.10.2016