首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Python读取健康(游戏中)

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

Stack Overflow用户
提问于 2019-01-21 01:47:10
回答 1查看 1.8K关注 0票数 0

我正在寻找一种方式,让python读取健康,以文本格式,然后执行一个命令(e.i。按下钥匙)。我在看一个由youtuber:(https://www.youtube.com/playlist?list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a)制作的系列。他编程巨蟒捕捉他的屏幕和“阅读”车道,以实现自动驾驶汽车。我想以本系列第一部分的目标为基础,使用numpy、PIL和OpenCV来使用下面的代码捕获我的屏幕。

代码语言:javascript
运行
复制
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来识别屏幕指定区域中的文本,也不知道在执行命令之后该做什么。

我所需要的只是一些建议,而不是一个完整的答案。任何帮助都是非常感谢的,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 10:56:21

如果区域在屏幕上总是具有相同的坐标,则可以对其进行裁剪并裁剪所有数字。数字应该是非常精确的。如果要只读取数字(0-9),可以使用模板匹配算法。对于这个算法,每个帧上的数字看起来都应该非常相似。matching.html,您必须为所有数字创建参考图像,只需在裁剪图像上查找。

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

其他解决方案是获取具有阈值的数字(或字母)的形状,HSV颜色空间中的颜色范围(如果数字总是具有相同的颜色)或其他一些算法。然后,每一个数字,你可以除以七段(display)。然后检查每一个数字,如果这些段是空的或填充的。这些算法是基于pyImageSearch教程(https://www.pyimagesearch.com/2017/02/13/recognizing-digits-with-opencv-and-python/)的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54282611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档