1

我正在尝试捕获游戏的像素来编写机器人脚本。我有一个简单的功能:

def printPixel():
  while True:
    flags, hcursor, (x,y) = win32gui.GetCursorInfo()
    print x,y,':',ImageGrab.grab().getpixel((x,y))

这将打印该像素的当前 x,y 坐标和 RGB 值。这在我的桌面上按预期工作,悬停在各种图标等上,但相同的功能在游戏中不起作用。有什么想法吗?

编辑:当我将图像保存到文件并对保存的图像执行相同的操作时,它在游戏中完美运行。但是,它的速度要慢得多。我想对内存中的图像进行操作,而不是从文件中操作。

4

1 回答 1

1

出于性能原因,视频游戏通常直接处理图形系统,因此一些典型的 Windows api 可能无法在它们上运行。尝试按下打印屏幕按钮截取屏幕截图。如果这捕获了您的屏幕,那么您可以在 python 中截取屏幕截图并检查您捕获的图像,同时考虑光标位置。

要在 Windows 上截屏,您可以查看这个问题的答案Fastest way to take a screenshot with python on windows它使用win32gui您正在使用的库。

于 2012-11-13T04:02:15.803 回答