日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python截图黑屏_对Python获取屏幕截图的4种方法详解

發布時間:2024/1/1 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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种方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。