Может ли кто-нибудь поделиться со мной идеями об эвристике для захвата цифр на счетчике воды с помощью OpenCV? У меня есть набор изображений с разными счетчиками воды (например, приведенный ниже), и задача состоит в том, чтобы распознать числа на нем (те, которые показывают, сколько воды ушло: на этом изображении это - 0 0 0 0 1 0 2 5 )
Первая задача, которую я вижу, - это как-то зафиксировать контуры, где находятся числа. Из того, что я пробовал до сих пор, лучшая стратегия поиска контуров была простейшей с использованием детектора края Canny, за которым следует метод cv2.findContours:
import imutils
import cv2
import numpy as np
import argparse
import glob
image = cv2.imread("watercounter.jpg")
image = imutils.resize(image, height=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
edged = cv2.Canny(blurred, 100, 1, 255, apertureSize=3)
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)
cv2.drawContours(image, cnts, -1, (0, 255, 0), 3)
cv2.imshow("output", image)
Этот подход выводит следующее изображение, и теперь я думаю об эвристике, чтобы отличить контуры цифр от всех других, чтобы я мог в дальнейшем скормить их стандартным методам распознавания цифр. Большое спасибо за идеи.