我正在尝试捕捉游戏的像素以编写机器人脚本。我有一个简单的功能:
def printPixel():
while True:
flags, hcursor, (x,y) = win32gui.GetCursorInfo()
print x,y,':',ImageGrab.grab().getpixel((x,y))
这将打印当前x,y坐标和该像素的RGB值。这在我的桌面上按预期工作,悬停在各种图标等上,但同样的功能在游戏中不起作用。有什么想法吗?
编辑:当我将图像保存到文件并对保存的图像执行相同的操作时,它在游戏中完美运行。但是,它的速度要慢一些。我想操作内存中的图像,而不是文件。
答案 0 :(得分:1)
视频游戏通常出于性能原因直接处理图形系统,因此一些典型的Windows apis可能无法使用它们。按下打印屏幕按钮尝试拍摄屏幕截图。如果它捕获你的屏幕,你可以在python中截取屏幕截图并检查你捕获的图像,同时考虑光标位置。
要在Windows上截取屏幕截图,您可以查看问题Fastest way to take a screenshot with python on windows的答案,它会在您使用时使用win32gui
库。