python截图黑屏_对Python获取屏幕截图的4种方法详解
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種方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
時間: 2019-08-25
總結
以上是生活随笔為你收集整理的python截图黑屏_对Python获取屏幕截图的4种方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的无限层级递归树前后端操作解决
- 下一篇: websocket python爬虫_p