Я работаю над задачей распознавания di git с использованием Tesseract и OpenCV. Я использовал его и пришел к решению, которое специально c для конкретного изображения. Если я изменю свое изображение, я не получу правильных результатов. Мне нужно изменить пороговое значение в соответствии с изображением. Я сделал следующие шаги:
Обрезка изображения для поиска подходящей области
Изменение изображения в оттенках серого
- Использование размытия по Гауссу
- Принятие соответствующего порога
- передача изображения через Tesseract
Итак, у меня вопрос, как я могу сделать свой код обобщенным c, т.е. можно использовать для разных изображений без обновления кода. Во время работы с этим изображением я обработал как
imggray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imggray,(5,5), 0)
imgDil=cv2.dilate(imgBlur,np.ones((5,5),np.uint8),iterations=1)
imgEro=cv2.erode(imgDil,np.ones((5,5),np.uint8),iterations=2)
ret,imgthresh=cv2.threshold(imgEro,28,255, cv2.THRESH_BINARY )
И для этого изображения как
imggray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imggray,(5,5), 0)
imgDil=cv2.dilate(imgBlur,np.ones((5,5),np.uint8),iterations=0)
imgEro=cv2.erode(imgDil,np.ones((5,5),np.uint8),iterations=0)
ret,imgthresh=cv2.threshold(imgEro,37,255, cv2.THRESH_BINARY )
Мне пришлось изменить значение итераций и минимальный порог, чтобы получить правильные результаты. Что может быть решением, чтобы не менять значения?