#python #opencv #ocr #opencv-contour
#python #opencv #распознавание #контур
Вопрос:
У меня есть проект, в котором я должен определять бенгальские числа по изображению. Я решил провести эксперимент, например, с числами с пробелами и без пробелов. Моя программа на 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
Сначала я использовал dilated in для поиска контуров, но это не сработало для number without space image. Затем я использую прямой вывод thresh, и после этого я получил большую часть чисел, но я не смог их вырезать идеально, потому что область контура определяет число с некоторой частью другого числа. Хотя на 2-м изображении не было места, но все же 2 числа не касались их друг друга. Итак, почему вывод такой?
С пробелом:
Без пробела:
Комментарии:
1. не могли бы вы загрузить результирующие изображения, в которых прямоугольники перекрываются на входном изображении.
Ответ №1:
К сожалению, я не заметил, что когда я вырезал прямоугольную часть, я добавил x:x h
вместо x:x w
. Это основная проблема. После изменения этого программа работала нормально. извините.