Эвристика для захвата цифр на водосчетчике

Может ли кто-нибудь поделиться со мной идеями об эвристике для захвата цифр на счетчике воды с помощью 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)

Этот подход выводит следующее изображение, и теперь я думаю об эвристике, чтобы отличить контуры цифр от всех других, чтобы я мог в дальнейшем скормить их стандартным методам распознавания цифр. Большое спасибо за идеи.

эвристика для сбора чисел на водосчетчике


person Vvan_G    schedule 21.06.2017    source источник


Ответы (1)


Один из способов избавиться от ненужных контуров - использовать HoughCircles и HoughLines. С помощью кружков Хафа вы можете распознать внутреннюю часть измерителя. HoughLines выделит прямоугольники с цифрами, что позволит вам отделить их от остальных.

Это одно руководство для цифр. признание с KNN.

Я не уверен, что использование контуров является лучшим подходом для распознавания цифр, потому что для большинства цифр вы найдете внутренний контур и внешние контуры. Обучение классификатора Хаара (поиск «примеров OpenCV HaarTraining») даст гораздо лучшие результаты.

person Totoro    schedule 22.06.2017
comment
Большое спасибо - сразу просматриваю ваши ссылки - person Vvan_G; 23.06.2017