Я следовал руководству по компьютерному зрению и выполнял небольшой проект, чтобы прочитать время из игры Время игры отформатировано ч: м. До сих пор я вычислил h и m с помощью findContours, но у меня возникли проблемы с выделением двоеточия, поскольку форма символа не является непрерывной. Из-за этого, когда я пытаюсь сопоставить шаблон, код выходит из строя и начинает использовать точку для сопоставления со всеми остальными цифрами.
Есть ли способы сгруппировать контуры по X?
Вот упрощенный код для получения контрольных цифр, код для получения цифр с экрана в основном такой же.
refCnts = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
refCnts = imutils.grab_contours(refCnts)
refCnts = contours.sort_contours(refCnts, method="left-to-right")[0]
digits = {}
# loop over the OCR-A reference contours
for (i, c) in enumerate(refCnts):
# compute the bounding box for the digit, extract it, and resize
# it to a fixed size
(x, y, w, h) = cv2.boundingRect(c)
roi = ref[y:y + h, x:x + w]
roi = cv2.resize(roi, (10, 13))
digits[i] = roi
Я новичок в python и opencv. Заранее извиняюсь, если это тупой вопрос.
Вот эталонное изображение, которое я использую:
Вот входное изображение, которое я пытаюсь прочитать: