您好,登錄后才能下訂單哦!
Python獲取電腦截圖有多種方式,具體如下:
PIL中的ImageGrab模塊
windows API
PyQt
pyautogui
PIL中的ImageGrab模塊
import time import numpy as np from PIL import ImageGrab img = ImageGrab.grab(bbox=(100, 161, 1141, 610)) img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
使用PIL中的ImageGrab模塊簡單,但是效率有點低,截屏一次需0.5s。
windows API
調用windows API,速度快但是使用較復雜,這里就不做詳細介紹了,因為有更好用的PyQt。
PyQt
PyQt比調用windows API簡單很多,而且有windows API的很多優勢,比如速度快,可以指定獲取的窗口,即使窗口被遮擋。需注意的是,窗口最小化時無法獲取截圖。
首先需要獲取窗口的句柄。
import win32gui hwnd_title = dict() def get_all_hwnd(hwnd,mouse): if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd): hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)}) win32gui.EnumWindows(get_all_hwnd, 0) for h,t in hwnd_title.items(): if t is not "": print(h, t)
程序會打印窗口的hwnd和title,有了title就可以進行截圖了。
from PyQt5.QtWidgets import QApplication from PyQt5.QtGui import * import win32gui import sys hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe') app = QApplication(sys.argv) screen = QApplication.primaryScreen() img = screen.grabWindow(hwnd).toImage() img.save("screenshot.jpg")
pyautogui
pyautogui是比較簡單的,但是不能指定獲取程序的窗口,因此窗口也不能遮擋,不過可以指定截屏的位置,0.04s一張截圖,比PyQt稍慢一點,但也很快了。
import pyautogui import cv2 img = pyautogui.screenshot(region=[0,0,100,100]) # x,y,w,h # img.save('screenshot.png') img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)
以上這篇對Python獲取屏幕截圖的4種方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。