使用 PIL 或 cv2 等模塊在 python 中捕獲屏幕的最有效方法是什么?因為它占用大量內存。我想教 AI 通過屏幕抓取和整潔的方式來玩 Chrome 的恐龍游戲,但它的速度很慢......我努力了:import numpy as npfrom PIL import ImageGrabimport cv2import timelast_time = time.time()while True: printscreen_pil = ImageGrab.grab(bbox= (0, 40, 800, 640)) printscreen_numpy = np.array(printscreen_pil.getdata(), dtype = 'uint8').reshape((printscreen_pil.size[1], printscreen_pil.size[0], 3)) print(f'the loop took {time.time() - last_time} seconds') last_time = time.time() cv2.imshow('window', printscreen_numpy) if cv2.waitKey(25) & 0xFF == ord('q'): cv2.destroyAllWindows() break> # average time = the loop took 2.068769931793213 seconds
1 回答

叮當貓咪
TA貢獻1776條經驗 獲得超12個贊
您可以使用mss
“純 python 中的超快速跨平臺多個屏幕截圖模塊”。
例如:
import time
import cv2
import numpy as np
from mss import mss
start_time = time.time()
mon = {'top': 200, 'left': 200, 'width': 200, 'height': 200}
with mss() as sct:
? ? while True:
? ? ? ? last_time = time.time()
? ? ? ? img = sct.grab(mon)
? ? ? ? print('The loop took: {0}'.format(time.time()-last_time))
? ? ? ? cv2.imshow('test', np.array(img))
? ? ? ? if cv2.waitKey(25) & 0xFF == ord('q'):
? ? ? ? ? ? cv2.destroyAllWindows()
? ? ? ? ? ? break
結果:
The loop took: 0.024120092391967773
輸出:
結果比當前結果快 100 倍。
添加回答
舉報
0/150
提交
取消