这是原图:
这是处理后的图像:
我正在尝试自动化一个迷你游戏,其中角色出现在屏幕上。我做了一些简单的研究并设法将图像处理为您在上面看到的内容,但它似乎无法正常工作。此代码返回单个字符“Q”。有办法做到这一点吗?
我使用的是5.4.0版本
提前致谢
我的代码:
import pytesseract
import cv2
import numpy as np
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\***\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'
image = cv2.imread('ocrtest.png', cv2.IMREAD_GRAYSCALE)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
cv2.imshow('test', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
data = pytesseract.image_to_string(thresh, lang='eng', config='-c tessedit_char_whitelist=01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ --psm 6 --oem 3')
print(data)
我从这个doc尝试了不同的所有简单阈值处理方法和Otsu的二值化。它导致图像质量很差,而且基本上也不起作用。我选择了自适应阈值,因为在我看来它看起来最好,但我不确定,因为我真的不知道它是如何工作的。
我尝试了所有其他 psm 选项,但它们也不起作用,我选择了 6,因为它至少给了我一些东西。奇怪的是,我认为根据这个描述 11 是最好的,但它什么也没返回。
11 Sparse text. Find as much text as possible in no particular order.