我刚开始用Python学习OpenCV,并试图构建我的第一个游戏机器人。我的想法是:逐帧捕捉游戏窗口,分析特定位置的像素,如果这些像素的颜色发生了变化,然后按下键进行一些自动操作。
这个游戏需要快速的反应,所以FPS是非常重要的,我已经尝试了mss和PIL,但是这两种方法中的fps是不够的(30+与mss和10+与PIL的ImageGrab),所以我想知道是否有更好的方法来实时处理像素。谢谢!
发布于 2017-12-10 16:05:04
我经历过同样的问题,因为我想做同样的事情。主要的问题是,您正在使用CPU来执行所有的操作,而且您并没有使用它的很多功能。
您可以优化您的程序或使用更多的权力。试试这个:
https://www.youtube.com/watch?v=ks4MPfMq8aQ&list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a
OpenCV有GPU模块,但只适用于C++。
这不是很多信息,但我希望它能有所帮助。
发布于 2017-12-10 18:06:40
想继续雅库布的伟大回答:
在某些情况下,使用C++或其他东西可能是个好主意。
我创建了一个带有opencv、pil、pyautogui和numpy以及其他几个模块的csgo,观看哨兵关于这个主题的视频可能会给你一些想法(上面的链接)。
可能会有GPU cv2的自定义模块。
小贴士:
1)图像抓取分辨率较低。
2)在imagegrab.grab bbox中,您可以给出发生抓取的坐标,而不是全屏。
3)灰度是0-255,所以它会加速进程,如果你知道反应中的颜色是什么,那就把它们传递给灰度,这样你就知道在哪种颜色中反应。
https://stackoverflow.com/questions/47740206
复制相似问题