我想锐化图像,以便OCR可以更清晰地读取图像。
为了便于阅读,我已使用此代码将图像处理为黑白。
import cv2
im_gray = cv2.imread('your_image_here', cv2.IMREAD_GRAYSCALE)
(thresh, im_bw) = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
thresh = 127
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite('bw_image.png', im_bw)
输出是这样的 然后,当我想通过OCR读取它时,输出不准确。我想读“ 443,296”和“ 72,727”。什么是锐化图像以便可以更准确地读取的代码?
答案 0 :(得分:0)
猛击只能使您步入正轨。如果您真的想获得更多细节,则可以探索的一件事就是超分辨率神经网络。
您可以轻松地尝试了解技术的出色程度,那就是letsenhance.io,但是根据您的问题,您可能希望在本地运行。我不确定最好的那个,但也许https://github.com/alexjc/neural-enhance
答案 1 :(得分:0)
我建议尝试简单地扩展字符,看看是否可以改善您的OCR。
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
dilation = cv2.dilate(img,kernel,iterations = 1)
有关OpenCV中形态转换的更多信息:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html