91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

對Python獲取屏幕截圖的4種方法詳解

發布時間:2020-08-27 04:16:31 來源:腳本之家 閱讀:307 作者:巽二 欄目:開發技術

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種方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛坪县| 青岛市| 开封市| 嘉荫县| 南丰县| 苍南县| 正定县| 岑巩县| 开封县| 和田市| 邵阳市| 武强县| 宁陵县| 焉耆| 维西| 安远县| 合水县| 武义县| 都昌县| 保康县| 呈贡县| 淳化县| 英吉沙县| 秦皇岛市| 东阳市| 康保县| 沙雅县| 嘉义市| 新宁县| 龙海市| 视频| 海原县| 咸宁市| 营口市| 甘孜| 麻城市| 巴彦淖尔市| 德化县| 都安| 稷山县| 长葛市|