Python에서 스크린샷을 찍고 화면을 녹화하는 방법은 무엇입니까? 이 방법은 간단하고 사용하기 쉽습니다!

환경

  • 윈도우 10 64비트

  • 파이썬 3.8

  • MSS 6.1.0

머리말

python-mss크로스 플랫폼을 지원하고 순수 python언어 .

설치하다

명령을 사용하여 pip설치

pip install mss

python-mss명령줄 도구도 제공되며 이를 mss사용하여 . 기본값은 전체 화면입니다.

a2ab6356879cae00bdd53cb5fa6ba8b6.png

사용 가능한 다른 매개변수는 mss -h다음을 통해

$ mss -h
usage: mss [-h] [-c COORDINATES] [-l {0,1,2,3,4,5,6,7,8,9}] [-m MONITOR]
           [-o OUTPUT] [-q] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -c COORDINATES, --coordinates COORDINATES
                        the part of the screen to capture: top, left, width,
                        height
  -l {0,1,2,3,4,5,6,7,8,9}, --level {0,1,2,3,4,5,6,7,8,9}
                        the PNG compression level
  -m MONITOR, --monitor MONITOR
                        the monitor to screen shot
  -o OUTPUT, --output OUTPUT
                        the output file name
  -q, --quiet           do not print created files
  -v, --version         show program's version number and exit

현실적인

두 부분의 내용을 살펴 보겠습니다. 첫 번째는 기본 기능이기도 한 스크린 샷입니다.

# 导入模块
import mss

# 实例化对象
with mss.mss() as sct:
    # 通过参数output指定保存的文件名
    sct.shot(output='output.png')

shot메서드에 매개변수도 있으므로 callback콜백을 사용하는 것이 편리합니다.

import mss

def fun_callback(filename):
    # 作为示例,打印下截取的文件名
    print(filename)

with mss.mss() as sct:
    # 通过参数output指定保存的文件名
    filename = sct.shot(output='output.png', callback=fun_callback)

창의 일부를 가로채는 경우

import mss

with mss.mss() as sct:
    # 设置一个区域,top为距离屏幕左上角的垂直方向上的距离,left是水平方向的距离,后面2个分别是宽和高
    monitor = {"top":50, "left":50, "width": 600, "height": 400}
    image_sct = sct.grab(monitor)
    # 转换成png保存起来
    mss.tools.to_png(image_sct.rgb, image_sct.size, output="output.png")

mss이미지 형식을 로 변환 해야 하는 경우 PIL다음을 수행할 수 있습니다.

import mss
from PIL import Image

with mss.mss() as sct:
    # 设置一个区域,top为距离屏幕左上角的垂直方向上的距离,left是水平方向的距离,后面2个分别是宽和高
    monitor = {"top":50, "left":50, "width": 600, "height": 400}
    image_sct = sct.grab(monitor)

    image_pil = Image.frombytes('RGB', image_sct.size, image_sct.bgra, 'raw', 'BGRX')
    image_pil.save('output_pil.png')

두 번째 예에서는 화면을 녹화하는 방법을 살펴보겠습니다. 여기, 당신은 그것을 사용해야합니다 opencv, 그냥 코드를 봐

import mss
import cv2
import numpy as np
from PIL import Image

monitor = {"top":50, "left":50, "width": 600, "height": 400}
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
fps = 20
video = cv2.VideoWriter('output.avi', fourcc, fps, (600, 400))

with mss.mss() as sct:
    # 设置一个区域,top为距离屏幕左上角的垂直方向上的距离,left是水平方向的距离,后面2个分别是宽和高

    while True:

        image_sct = sct.grab(monitor)
        image_pil = Image.frombytes('RGB', image_sct.size, image_sct.bgra, 'raw', 'BGRX')
        image_cv = np.array(image_pil)
        video.write(image_cv)

        if cv2.waitKey(25) & 0xFF == ord('q'):
            break

video.release()

자세한 내용은 공식 링크 https://github.com/BoboTiG/python-mss를 참조하십시오.

Python 실용 모듈에 대한 주제

더 유용한 python모듈을 다음으로 이동하십시오.

https://xugaoxiang.com/category/python/modules/

추천

출처blog.csdn.net/djstavaV/article/details/127002935