В настоящее время я пытаюсь написать программу, которая может определять рукописные числа и математические слова, такие как log и sin. Тем не менее, прямо сейчас, как написано, моя программа может обнаруживать только отдельные символы, поэтому, в то время как числа обнаруживаются очень хорошо, слова обнаруживаются как отдельные буквы. Прилагается мой текущий код.
import cv2
import numpy as np
from PIL import Image, ImageOps
img = cv2.imread("example.JPG")
morph = img.copy()
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 1))
morph = cv2.morphologyEx(morph, cv2.MORPH_CLOSE, kernel)
morph = cv2.morphologyEx(morph, cv2.MORPH_OPEN, kernel)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 15))
# take morphological gradient
gradient_image = cv2.morphologyEx(morph, cv2.MORPH_GRADIENT, kernel)
gray = cv2.cvtColor(gradient_image, cv2.COLOR_BGR2GRAY)
#take this out?
img_grey = cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel)
# blur = cv2.medianBlur(gray,5)
blur = cv2.medianBlur(img_grey,3)
ret, thing = cv2.threshold(blur, 0.0, 255.0, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
img_dilation = cv2.dilate(thing, kernel, iterations=3)
cv2.imwrite("check_equal.jpg", img_dilation)
conturs_lst = cv2.findContours(img_dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
coor_lst = []
for cnt in conturs_lst:
x,y,w,h = cv2.boundingRect(cnt)
if w < 15 or h < 15:
continue
coor_lst.append((x,y,w,h))
Как можно было бы сохранить то же поведение для чисел, но каким-то образом позволить программе обнаруживать, что вещи - это слова, ограничивающие рамки вокруг всего слова?