使用OpenCV实时处理像素

时间:2017-12-10 15:16:32

标签: python

我刚开始用Python学习OpenCV,并且正在尝试构建我的第一个游戏机器人。我的想法是:逐帧捕捉游戏窗口并分析某些特定位置的像素,如果这些像素的颜色发生了变化,则按一个键进行一些自动操作。

这个游戏需要快速反应,因此FPS非常重要,我已经尝试了mss和PIL,但两种方法中的fps都不够(30+用mss和10+用PIL的ImageGrab),所以我想知道如果有更好的方法来实时处理像素。谢谢!

2 个答案:

答案 0 :(得分:2)

我经历过同样的问题,因为我想做同样的事情。 主要问题是您正在使用CPU来执行所有操作,并且您没有使用它的大部分功能。

您可以优化程序或使用更多电量。试试这个:

  • 阅读使用GPU和python(例如CUDA)
  • 尝试在较少的数据上执行OpenCV操作 - 例如将RGB转换为灰度,降低ROI

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,所以它会加快这个过程,如果你知道这个反应中的颜色只是将它们传递给灰度,所以你知道要响应的颜色。