python - 如何使用 Python 读取健康(游戏中)

标签 python python-3.x opencv python-imaging-library

我正在寻找一种让 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 来识别屏幕指定区域中的文本,或者执行命令后要做什么。

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

最佳答案

如果区域在屏幕上始终具有相同的坐标,您可以裁剪它并裁剪所有数字。数字应该非常准确。
如果您只想读取数字(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/)

关于python - 如何使用 Python 读取健康(游戏中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54282611/

相关文章:

python - 如何获取 QtChart QLineSeries 中的轴标签

python - SSLError ("bad handshake") 尝试访问资源自定义证书和请求时

python - 不使用 len 运算符查找列表的长度

python - 如何测试一个类是否显式定义了 __gt__?

string - Python 硬编码字符串与 str() 方法之间的差异

python-3.x - 虽然安装了helper,但导入helper库时出错

python - 如何使用大于 2 GB 的 OpenCV 编写 avi 文件?

Python列表操作

c# - 如何使用 OpenCVSharp 在 C# 中找到最小面积矩形?

python - 如何保存大型Python numpy数据集?