Il existe de nombreuses façons d'obtenir des captures d'écran d'ordinateur en Python, comme suit :
Module ImageGrab dans PIL
API Windows
PyQt
pyautogui
Module ImageGrab dans PIL
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)
L'utilisation du module ImageGrab dans PIL est simple, mais l'efficacité est un peu faible.
API Windows
Appelez l'API Windows, qui est rapide mais compliquée à utiliser. Je n'entrerai pas dans les détails ici car il y a PyQt, qui est préférable à utiliser.
PyQt
PyQt est beaucoup plus simple que d'appeler l'API Windows, et il présente de nombreux avantages de l'API Windows, tels qu'une vitesse rapide et la possibilité de spécifier la fenêtre à obtenir, même si la fenêtre est bloquée. Il convient de noter que les captures d'écran ne peuvent pas être prises lorsque la fenêtre est réduite.
Vous devez d’abord récupérer la poignée de la fenêtre.
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)
Le programme imprimera le hwnd et le titre de la fenêtre. Avec le titre, vous pourrez prendre une capture d'écran.
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 est relativement simple, mais il ne peut pas spécifier la fenêtre pour obtenir le programme, donc la fenêtre ne peut pas être bloquée, mais il peut spécifier l'emplacement de la capture d'écran. 0,04 s, ce qui est légèrement plus rapide que PyQt. Plus lent, mais plus rapide.
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)
Pour plus d'articles techniques liés à Python, veuillez visiter la colonne Tutoriel Python pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!