我刚开始用Python学习OpenCV,并且正在尝试构建我的第一个游戏机器人。我的想法是:逐帧捕捉游戏窗口并分析某些特定位置的像素,如果这些像素的颜色发生了变化,则按一个键进行一些自动操作。
这个游戏需要快速反应,因此FPS非常重要,我已经尝试了mss和PIL,但两种方法中的fps都不够(30+用mss和10+用PIL的ImageGrab),所以我想知道如果有更好的方法来实时处理像素。谢谢!
答案 0 :(得分:2)
我经历过同样的问题,因为我想做同样的事情。 主要问题是您正在使用CPU来执行所有操作,并且您没有使用它的大部分功能。
您可以优化程序或使用更多电量。试试这个:
https://www.youtube.com/watch?v=ks4MPfMq8aQ&list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a
OpenCV具有GPU模块,但仅适用于C ++。
信息不多,但我希望它有所帮助。
答案 1 :(得分:0)
想要继续Jakubs的好回答:
在某些情况下,使用C ++或其他东西可能是个好主意。
我用opencv,pil,pyautogui和numpy以及其他一些模块创建了一个csgo aimbot,观看有关此主题的sentdex视频可能会给你一些想法(链接上面)。
GPU cv2可能有自定义模块
py的提示:
1)降低imagegrab分辨率
2)在imagegrab.grab bbox中,您可以给出将要进行抓取而不是全屏的坐标
3)灰度是0-255,所以它会加快这个过程,如果你知道这个反应中的颜色只是将它们传递给灰度,所以你知道要响应的颜色。