如何使用Python读取Health(在游戏中)

2024-05-01 04:42:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法,让python以文本格式读取运行状况,然后执行一个命令(即按一个键)。 我在看youtuber sentdex的一个系列:(https://www.youtube.com/playlist?list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a)。 他编程python捕捉屏幕并“读取”车道,以完成一辆自动驾驶汽车。 我想以本系列第一部分的目标为基础,使用numpy、PIL和OpenCV,使用以下代码捕捉屏幕。在

import numpy as np
from PIL import ImageGrab
import cv2
import time



last_time = time.time()
while(True):
    screen =  np.array(ImageGrab.grab(bbox=(0,0, 1360, 768)))
    printscreen_numpy =   np.array(printscreen_pil.getdata(),dtype='uint8')

    print('Loop took {} seconds'.format(time.time()-last_time))
    last_time = time.time()
    cv2.imshow('window', cv2.cvtColor (screen, cv2.COLOR_BGR2RGB))
    if cv2.waitKey(25) & 0xFF == ord('q'):
        cv2.destroyAllWindows()
        break

(打印循环所需时间的代码可以忽略)

但是,我不知道如何使用opencv或PIL来识别屏幕指定区域中的文本,也不知道如何执行命令。在

我只需要一些建议,而不是寻找一个完整的答案。 谢谢任何帮助。在


Tags: 方法文本格式代码importnumpypil屏幕time
1条回答
网友
1楼 · 发布于 2024-05-01 04:42:23

如果区域在屏幕上的坐标始终相同,则可以对其进行裁剪并裁剪所有数字。数字应该裁剪得非常准确。 如果您只想读取数字(0-9),您可以使用模板匹配算法作为示例。对于这个算法,每个帧上的数字都应该完全相同。 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html你必须为所有的数字创建一个参考图像,只需在低沉的图像上查找它。在

第二种解决方案:您可以使用opencv+tesseract(其中包括一个用于文本识别的高度精确的基于深度学习的模型)。https://www.pyimagesearch.com/2018/09/17/opencv-ocr-and-text-recognition-with-tesseract/

其他的解决方案是用阈值、HSV颜色空间中的颜色范围(如果数字总是相同的颜色)或其他一些算法来获得数字(或字母)的形状。然后你可以把每个数字分成七段(https://en.wikipedia.org/wiki/Seven-segment_display)。然后检查每个数字是否为空或填充。 这些算法基于pyImageSearch教程(https://www.pyimagesearch.com/2017/02/13/recognizing-digits-with-opencv-and-python/

相关问题 更多 >