最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python實現屏幕截圖詳解

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

一、序言

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

二、環(huán)境配置

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)

優(yōu)點:

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

缺點:

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

import win32gui

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


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,并且保證那個窗口沒有被你最小化即可

優(yōu)點:

方便快捷,容易寫核心部分就一行.速度快0.04s左右,基本可以達到實時截屏的效果??梢宰杂纱_定要截屏的窗口

缺點:

不可以自由確定截屏區(qū)域 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個字節(jié),
    # R,G,B分量分別用8個bit表示,存儲順序為B,G,R,最后8個字節(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轉換為RBG格式
cv2.imshow("asd",img)      #imshow
cv2.waitKey(0)

四、結語

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

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

相關文章

  • 簡介Django中內置的一些中間件

    簡介Django中內置的一些中間件

    這篇文章主要介紹了簡介Django中內置的一些中間件,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • python中字典dict常用操作方法實例總結

    python中字典dict常用操作方法實例總結

    這篇文章主要介紹了python中字典dict常用操作方法,實例總結了Python針對字典操作的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python中delattr刪除對象方法的代碼分析

    python中delattr刪除對象方法的代碼分析

    在本篇文章里小編給大家分享了一篇關于python中delattr刪除對象方法的代碼分析內容,有興趣的朋友們可以學習下。
    2020-12-12
  • Python讀大數據txt

    Python讀大數據txt

    本文通過2個例子給大家介紹了如何使用python實現讀取大文件txt的方法,有需要的小伙伴可以參考下
    2016-03-03
  • python列表推導式的原理及使用方法

    python列表推導式的原理及使用方法

    這篇文章主要介紹了python列表推導式的原理及使用方法,列表推導式即list?comprehension,有時也被翻譯為列表解析式,是一種創(chuàng)建列表的簡潔語法,更多詳細內容需要的小伙伴可以參考一下下面文章相關資料
    2022-03-03
  • Python利用 SVM 算法實現識別手寫數字

    Python利用 SVM 算法實現識別手寫數字

    支持向量機 (Support Vector Machine, SVM) 是一種監(jiān)督學習技術,它通過根據指定的類對訓練數據進行最佳分離,從而在高維空間中構建一個或一組超平面。本文將介紹通過SVM算法實現手寫數字的識別,需要的可以了解一下
    2021-12-12
  • 使用Python模塊進行數據處理的詳細步驟

    使用Python模塊進行數據處理的詳細步驟

    Python 提供了豐富的模塊和庫,用于處理各種類型的數據,本文介紹了一些常用的模塊和庫,以及如何使用它們進行數據處理的詳細步驟和代碼示例,對我們的學習或工作有一定的幫助,需要的朋友可以參考下
    2025-02-02
  • 給numpy.array增加維度的超簡單方法

    給numpy.array增加維度的超簡單方法

    這篇文章主要介紹了給numpy.array增加維度的超簡單方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python爬蟲實現中英翻譯詞典

    python爬蟲實現中英翻譯詞典

    這篇文章主要為大家詳細介紹了python爬蟲實現中英翻譯詞典,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 簡單談談Python中的反轉字符串問題

    簡單談談Python中的反轉字符串問題

    本文給大家總結了5種可以實現python中反轉字符串的方法,非常的實用,有需要的小伙伴可以參考下
    2016-10-10

最新評論

霸州市| 永州市| 万安县| 开原市| 桦川县| 孙吴县| 行唐县| 崇仁县| 芜湖县| 芒康县| 甘谷县| 双牌县| 中宁县| 思南县| 临清市| 卓资县| 彰化市| 沁源县| 任丘市| 南郑县| 利津县| 达日县| 南平市| 深圳市| 普洱| 延庆县| 榆树市| 金寨县| 海宁市| 轮台县| 唐海县| 靖安县| 宁陵县| 卓资县| 吴堡县| 巴东县| 雅江县| 普定县| 类乌齐县| 东明县| 进贤县|