欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用Python實(shí)現(xiàn)屏幕截圖詳解

 更新時(shí)間:2022年01月21日 15:22:52   作者:風(fēng)吹落葉花飄蕩  
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)屏幕截圖詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

一、序言

在csdn上有很多純copy,這給我復(fù)現(xiàn)帶來了很大的麻煩,所以我想根據(jù)我的個(gè)人找截圖的經(jīng)歷記錄下來,給未來的自己看,免得忘記了云云。
由于我比較喜歡用opencv處理圖像,所以截屏最后都會(huì)附帶一個(gè)使用opencv顯示圖片的一個(gè)步驟。

二、環(huán)境配置

1、下載pyautogui包

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

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

2、下載opencv-python包

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

注:方便實(shí)現(xiàn)對圖片的進(jìn)一步處理,比如實(shí)時(shí)獲取云云。

3、下載PyQt5包

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

注:使用PyQt方法截屏下載介個(gè)

4、下載pypiwin32包

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

注:使用PyQt方法截屏下載介個(gè)

三、屏幕截屏源碼與解析

1、使用pyautogui方法實(shí)現(xiàn)截屏

import pyautogui
import cv2
import numpy as np

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

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

優(yōu)點(diǎn):

方便快捷,容易寫核心部分就一行.速度快0.04s左右,基本可以達(dá)到實(shí)時(shí)截屏的效果??梢宰杂纱_定截屏區(qū)域

缺點(diǎn):

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

import win32gui

hwnd_title = dict() #創(chuàng)建字典保存窗口的句柄與名稱映射關(guān)系


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)

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

b.使用PyQt5截屏核心程序

from PyQt5.QtWidgets import QApplication
import win32gui
import sys
#這個(gè)是截取全屏的
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換成上一個(gè)程序中打印的title,并且保證那個(gè)窗口沒有被你最小化即可

優(yōu)點(diǎn):

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

缺點(diǎn):

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

def convertQImageToMat(incomingImage):
    '''  Converts a QImage into an opencv MAT format  '''
    # Format_RGB32 = 4,存入格式為B,G,R,A 對應(yīng) 0,1,2,3
    # RGB32圖像每個(gè)像素用32比特位表示,占4個(gè)字節(jié),
    # R,G,B分量分別用8個(gè)bit表示,存儲(chǔ)順序?yàn)锽,G,R,最后8個(gè)字節(jié)保留
    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轉(zhuǎn)換為RBG格式
cv2.imshow("asd",img)      #imshow
cv2.waitKey(0)

四、結(jié)語

我再查詢了多個(gè)截屏的方法之后,發(fā)現(xiàn)就學(xué)會(huì)這兩種截屏方法即可,所以就沒有再放其他方法了

到此這篇關(guān)于用Python實(shí)現(xiàn)屏幕截圖詳解的文章就介紹到這了,更多相關(guān)Python屏幕截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python如何將數(shù)據(jù)輸出到文件中

    python如何將數(shù)據(jù)輸出到文件中

    這篇文章主要介紹了python如何將數(shù)據(jù)輸出到文件中問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • python采集微信公眾號文章

    python采集微信公眾號文章

    這篇文章主要為大家詳細(xì)介紹了python采集微信公眾號文章的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python實(shí)現(xiàn)的快速排序算法詳解

    Python實(shí)現(xiàn)的快速排序算法詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的快速排序算法,結(jié)合實(shí)例形式分析了Python快速排序的原理、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • BeautifulSoup獲取指定class樣式的div的實(shí)現(xiàn)

    BeautifulSoup獲取指定class樣式的div的實(shí)現(xiàn)

    這篇文章主要介紹了BeautifulSoup獲取指定class樣式的div的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Pycharm中新添加或者導(dǎo)入項(xiàng)目文件名紅色的解決方法

    Pycharm中新添加或者導(dǎo)入項(xiàng)目文件名紅色的解決方法

    Pycharm的代碼中添加新的文件夾,發(fā)現(xiàn)文件夾下的文件名是紅色的,遇到這樣的問題如何解決呢,下面小編給大家?guī)砹薖ycharm中新添加或者導(dǎo)入項(xiàng)目文件名紅色的解決方法,感興趣的朋友一起看看吧
    2023-12-12
  • 使用Python編寫一個(gè)在Linux下實(shí)現(xiàn)截圖分享的腳本的教程

    使用Python編寫一個(gè)在Linux下實(shí)現(xiàn)截圖分享的腳本的教程

    這篇文章主要介紹了使用Python編寫一個(gè)在Linux下實(shí)現(xiàn)截圖分享的腳本的教程,利用到了scrot和urllib2庫,需要的朋友可以參考下
    2015-04-04
  • Python使用CMD模塊更優(yōu)雅的運(yùn)行腳本

    Python使用CMD模塊更優(yōu)雅的運(yùn)行腳本

    這篇文章主要介紹了Python使用CMD模塊更優(yōu)雅的運(yùn)行腳本的方法,實(shí)例分析了Python中cmd模塊的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 基于python實(shí)現(xiàn)新春煙花盛宴效果

    基于python實(shí)現(xiàn)新春煙花盛宴效果

    這篇文章給大家用Python綻放了一場新春煙花盛宴,這里提前祝大家新春快樂呀,文中通過代碼示例給大家介紹的非常詳細(xì),感興趣的小伙伴可以自己動(dòng)手嘗試一下
    2024-02-02
  • yolov5 win10 CPU與GPU環(huán)境搭建過程

    yolov5 win10 CPU與GPU環(huán)境搭建過程

    這篇文章主要介紹了yolov5 win10 CPU與GPU環(huán)境搭建過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • YOLOv5改進(jìn)教程之添加注意力機(jī)制

    YOLOv5改進(jìn)教程之添加注意力機(jī)制

    注意力機(jī)制最先被用在NLP領(lǐng)域,Attention就是為了讓模型認(rèn)識(shí)到數(shù)據(jù)中哪一部分是最重要的,為它分配更大的權(quán)重,獲得更多的注意力在一些特征上,讓模型表現(xiàn)更好,這篇文章主要給大家介紹了關(guān)于YOLOv5改進(jìn)教程之添加注意力機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評論