개요
Python에서 화면을 캡쳐를 수행하는 라이브러리는 다양하게 존재합니다. 그러나 라이브러리 간 처리 속도의 차이가 있으며, 이는 프로젝트를 수행함에 있어 많은 영향을 미친다. 따라서 이 게시글에서는 라이브러리의 처리 속도를 비교하고 어떤 라이브러리가 가장 효과적인지에 대해 알아봅니다.
라이브러리
대표적으로 화면을 캡쳐할 수 있는 라이브러리는 Pillow, pyautogui, mss 가 존재합니다.
(관련 라이브러리의 자세한 설명은 생략하겠습니다.)
성능
다음과 같이 화면의 일부 영역을 캡쳐하는 코드를 구현하였습니다.
import cv2
import mss
import time
import pyautogui
import numpy as np
from PIL import ImageGrab
x1, y1, x2, y2 = 400, 400, 600, 600
width, height = x2 - x1, y2 - y1
nt = time.time()
roi = {"top": x1, "left": y1, "width": width, "height": height}
s = np.array(mss.mss().grab(roi))
print('mss :', time.time() - nt)
nt = time.time()
d = np.array(ImageGrab.grab((x1, y1, x2, y2)))
d = cv2.cvtColor(d, cv2.COLOR_BGR2RGB)
print('pillow :', time.time() - nt)
nt = time.time()
f = np.array(pyautogui.screenshot(region=(x1, y1, width, height)))
f = cv2.cvtColor(f, cv2.COLOR_BGR2RGB)
print('pyautogui :', time.time() - nt)
cv2.imshow('s', s)
cv2.imshow('d', d)
cv2.imshow('f', f)
cv2.waitKey(0)
cv2.destroyAllWindows()
결과
mss : 0.008005619049072266
pillow : 0.0470428466796875
pyautogui : 0.0370333194732666
결론
실험 결과 mss 라이브러리의 처리 속도가 가장 빠르게 나왔습니다.
mss 사용하여 화면을 녹화 했을 때 가장 부드럽게 녹화가 가능하였고, 프레임도 높게 설정할 수 있었습니다.
'Python > 모듈 & 패키지 & 라이브러리' 카테고리의 다른 글
[Python] 리스트의 원소 곱 - reduce (0) | 2024.01.11 |
---|---|
[Python] / [pytube] Youtube 영상 처리 (0) | 2023.07.18 |
[Python] / [pafy] Youtube 영상 처리 (0) | 2023.07.10 |
[Python] 우선순위 큐 (Priority Queue) (0) | 2023.01.17 |
[Python] set 집합 (0) | 2022.10.18 |