Я пытаюсь создать программу для расшифровки капч определенного типа.
Мой подход заключается в разделении капчи на отдельные символы (всегда состоящие из 5, только маленьких букв и цифр) и сохранении каждого символа в отдельной папке, чтобы иметь базу данных для обучения, а затем посмотреть, как она будет работать.
Я столкнулся с проблемой при попытке найти контуры с помощью openCV.
Вот мой код:
import numpy as np
import cv2
im = cv2.imread('4n2gd.png')
imcopy = im.copy()
imgray = cv2.cvtColor(imcopy,cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(imgray,5)
th = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
finimg = cv2.bitwise_not(th)
im2, contours, hierarchy = cv2.findContours(finimg,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im, contours, -1, (0,255,0), 1)
cv2.imwrite('modified.png',im)
Исходное изображение:
изображение с нарисованными контурами:
Дело в том, что я ожидаю, что CHAIN_APPROX_SIMPLE будет делать прямоугольники вокруг каждого набора, если черные пиксели, а скорее он просто функционирует так же, как CHAIN_APPROX_NONE.
Что я должен сделать, чтобы изменить это?