2012-11-13 34 views
1

我正在嘗試捕獲遊戲的像素以編寫一個bot。我有一個簡單的功能:Python PIL-ImageGrab在捕獲遊戲像素時不準確

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

這將打印當前的x,y座標和該像素的RGB值。這可以在我的桌面上按照預期的方式在各種圖標等上運行,但是相同的功能在遊戲中不起作用。有什麼想法嗎?

編輯:當我將圖像保存到文件並對保存的圖像執行相同的操作時,它可以在遊戲中完美運行。但是,它速度較慢。我想對內存中的圖像進行操作,而不是從文件中操作。

回答

1

由於性能原因,視頻遊戲通常直接處理圖形系統,所以一些典型的windows apis可能無法正常工作。按下打印屏幕按鈕嘗試並截取屏幕截圖。如果這樣捕獲屏幕,你可以在python中截取屏幕截圖,並在考慮光標位置的情況下檢查捕獲的圖像。

要在Windows上截取屏幕截圖,可以查看問題Fastest way to take a screenshot with python on windows的這個答案,它使用您正在使用的win32gui庫。