为什么tesseract不会在图像中找到这个简单的文字?

如何解决为什么tesseract不会在图像中找到这个简单的文字?

我已经尝试了几个小时来调整此图像的大小和颜色,但始终无法获得正确的字母。请看下图。这是我正在使用的测试图像。目标是将其用于自动化目的。谢谢!

enter image description here

更大的样本

enter image description here

import numpy as np
import PyTesseract
from PIL import ImageGrab
import win32gui
import time

toplist,winlist = [],[]

#time.sleep(3)

def enum_cb(hwnd,results):
    if 'FPS:' in win32gui.GetwindowText(hwnd):
        print(hex(hwnd),win32gui.GetwindowText(hwnd))
        winlist.append(hwnd)


win32gui.EnumWindows(enum_cb,None)

win32gui.SetForegroundWindow(winlist[0])
bBox = win32gui.GetwindowRect(winlist[0])
print(bBox)
img = np.array(ImageGrab.grab(bBox=(130,810,800,1080)))


#percent by which the image is resized
scale_percent = 400

#calculate the 50 percent of original dimensions
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)

# dsize
dsize = (width,height)

# resize image
output = cv2.resize(img,dsize)

#img.show()

PyTesseract.PyTesseract.tesseract_cmd = r"L:\Program Files\Tesseract-OCR\tesseract.exe"

# img = cv2.imread(r"L:\MGO2PC\MGO2 UNOFFICIAL PC\RPCS3 EMU\screenshots\screenshot-2021_04_06_17_13_03.png",0)
#crop_img = img[800:900,260:800]
#cv2.imshow("cropped",crop_img)
#cv2.waitKey(0)

i = cv2.imwrite("test.png",output)
text = PyTesseract.image_to_string(output,lang='eng')
print(text)

解决方法

最终发现我可以隔离文本颜色并且tesseract之后阅读没有问题。 enter image description here

def cv2_from_screen(self):
   boundaries = [
        ([0,179,105],[38,255,167])  # BGR
    ]

    pytesseract.pytesseract.tesseract_cmd = r"L:\Program Files\Tesseract- 
    OCR\tesseract.exe"
    def enum_cb(hwnd,results):
        if 'FPS:' in win32gui.GetWindowText(hwnd):
            print(hex(hwnd),win32gui.GetWindowText(hwnd))
            self.winlist.append(hwnd)

    win32gui.EnumWindows(enum_cb,None)
    win32gui.EnumWindows(enum_cb,None)
    win32gui.SetForegroundWindow(self.winlist[0])

    image = pyautogui.screenshot()
    image = cv2.cvtColor(np.array(image.crop(box=[0,800,1000,1080])),cv2.COLOR_RGB2BGR) #COLOR_RGB2BGR and COLOR_BGR2GRAY

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?