亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么用Python實現屏幕截圖

發布時間:2022-01-21 16:48:00 來源:億速云 閱讀:306 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“怎么用Python實現屏幕截圖”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么用Python實現屏幕截圖”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、序言

在csdn上有很多純copy,這給我復現帶來了很大的麻煩,所以我想根據我的個人找截圖的經歷記錄下來,給未來的自己看,免得忘記了云云。

二、環境配置

1、下載pyautogui包

pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:使用pyautogui方法獲取截屏的話,只下載這個就行了

2、下載opencv-python包

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:方便實現對圖片的進一步處理,比如實時獲取云云。

3、下載PyQt5包

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:使用PyQt方法截屏下載介個

4、下載pypiwin32包

pip install pypiwin32 -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:使用PyQt方法截屏下載介個

三、屏幕截屏源碼與解析

1、使用pyautogui方法實現截屏

import pyautogui
import cv2
import numpy as np

img = pyautogui.screenshot(region=[300,50, 200, 100])  # 分別代表:左上角坐標,寬高
#對獲取的圖片轉換成二維矩陣形式,后再將RGB轉成BGR
#因為imshow,默認通道順序是BGR,而pyautogui默認是RGB所以要轉換一下,不然會有點問題
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

cv2.imshow("截屏",img)
cv2.waitKey(0)

優點:

方便快捷,容易寫核心部分就一行.速度快0.04s左右,基本可以達到實時截屏的效果。可以自由確定截屏區域

缺點:

但是不能指定獲取程序的窗口,因此窗口也不能遮擋。 2、使用PyQt方法實現截屏 a.獲取窗口的句柄,也就是目標窗口名title。

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!= "":
        print(h, t)

注:程序會打印所有窗口的hwnd和title,有了title就可以進行截圖了。

b.使用PyQt5截屏核心程序

from PyQt5.QtWidgets import QApplication
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")

注:如果想截取特定的窗口,只需要將C:/Windows/system32/cmd.exe換成上一個程序中打印的title,并且保證那個窗口沒有被你最小化即可

優點:

方便快捷,容易寫核心部分就一行.速度快0.04s左右,基本可以達到實時截屏的效果。可以自由確定要截屏的窗口

缺點:

不可以自由確定截屏區域 c.使用PyQt5截屏用Mat格式顯示的核心程序

def convertQImageToMat(incomingImage):
    '''  Converts a QImage into an opencv MAT format  '''
    # Format_RGB32 = 4,存入格式為B,G,R,A 對應 0,1,2,3
    # RGB32圖像每個像素用32比特位表示,占4個字節,
    # R,G,B分量分別用8個bit表示,存儲順序為B,G,R,最后8個字節保留
    incomingImage = incomingImage.convertToFormat(4)
    width = incomingImage.width()
    height = incomingImage.height()

    ptr = incomingImage.bits()
    ptr.setsize(incomingImage.byteCount())
    arr = np.array(ptr).reshape(height, width, 4)  # Copies the data
    # arr為BGRA,4通道圖片
    return arr

from PyQt5.QtWidgets import QApplication
import win32gui
import sys
import cv2
import numpy as np
hwnd = win32gui.FindWindow(None, '劍士之魂中文版小游戲,在線玩,4399小游戲 - 360安全瀏覽器 13.1')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()

img=convertQImageToMat(img)#將獲取的圖像從QImage轉換為RBG格式
cv2.imshow("asd",img)      #imshow
cv2.waitKey(0)

讀到這里,這篇“怎么用Python實現屏幕截圖”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

鞍山市| 固阳县| 丰城市| 慈溪市| 忻城县| 灌阳县| 成武县| 长乐市| 广宗县| 嘉峪关市| 横山县| 曲水县| 紫金县| 阳泉市| 冕宁县| 嘉定区| 米脂县| 吕梁市| 汝南县| 和政县| 航空| 勃利县| 宁夏| 普陀区| 临安市| 津南区| 康马县| 南岸区| 金坛市| 鄂托克旗| 麻阳| 大渡口区| 孟州市| 浮山县| 册亨县| 洛阳市| 米脂县| 赣榆县| 云阳县| 阿拉善左旗| 柯坪县|