Comment faire une capture d'écran en python

Libérer: 2019-07-08 09:17:28
original
7955 Les gens l'ont consulté

Comment faire une capture d'écran en python

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)
Copier après la connexion

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)
Copier après la connexion

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")
Copier après la connexion

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)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal