admin管理员组

文章数量:1558697

import pyautogui
import numpy
import cv2
import time
import mss
from PIL import ImageGrab

sct = mss.mss(mon=1, optimize=True)

def get_screen_by_grab():
    start = time.time()  # 记录开始时间
    img = ImageGrab.grab((0, 0, 800, 600))  # 截图
    img = cv2.cvtColor(numpy.array(img), cv2.COLOR_RGB2BGR)  # 转换色值
    end = time.time()  # 记录结束时间
    print(end - start)  # 打印截图消耗时间
    cv2.imshow('test', img)  # 显示截图
    cv2.waitKey(0)  # 等待结束


def get_screen_by_autogui():
    start = time.time()
    img = pyautogui.screenshot(region=[0, 0, 800, 600])  # 截图
    img = cv2.cvtColor(numpy.array(img), cv2.COLOR_RGB2BGR)  # 转换色值
    end = time.time()
    print(end - start)
    cv2.imshow('test', img)
    cv2.waitKey(0)


def get_screen_by_mss():
    start = time.time()
    img = sct.grab({'top': 0, 'left': 0, 'width': 800, 'height': 600})  # 截图
    img = cv2.cvtColor(numpy.array(img), cv2.COLOR_RGB2BGR)  # 转换色值
    end = time.time()
    print(end - start)
    cv2.imshow('test', img)
    cv2.waitKey(0)


get_screen_by_grab()

get_screen_by_autogui()

get_screen_by_mss()

记录使用python屏幕截图的三种方案

对比两种方案的性能:

        grad截图40ms左右

        pyautogui截图100ms左右

        mss截图20ms左右

本文标签: 截图屏幕方法Python