[python] cx_Freeze를 사용하여 작성한 실행 파일의 화면 녹화 및 캡처 방법

cx_Freeze는 Python으로 작성된 프로그램을 실행 파일로 변환하는 도구입니다. 이번 글에서는 cx_Freeze를 사용하여 작성한 실행 파일의 화면 녹화와 캡처 방법에 대해 알아보겠습니다.

화면 녹화

화면 녹화를 위해서는 추가적인 라이브러리를 설치해야 합니다. 가장 많이 사용되는 라이브러리 중 하나인 pyautogui를 설치해보겠습니다.

pip install pyautogui

pyautogui를 사용하면 마우스의 움직임과 키보드 입력을 감지할 수 있으며, 화면을 캡처하거나 녹화하는 기능도 제공합니다. 아래는 화면 녹화 예제 코드입니다.

import pyautogui
import cv2
import numpy as np
import datetime

# 화면 크기 설정
screen = (1920, 1080)

# 녹화할 파일 이름 설정
filename = "recording_" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + ".avi"

# 비디오 코덱 설정
fourcc = cv2.VideoWriter_fourcc(*"XVID")

# 비디오 녹화 객체 생성
video_writer = cv2.VideoWriter(filename, fourcc, 20.0, screen)

# 무한 루프로 화면 녹화
while True:
    # 화면 캡처
    image = pyautogui.screenshot()
    
    # OpenCV 포맷으로 변환
    frame = np.array(image)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    
    # 비디오 파일에 쓰기
    video_writer.write(frame)
    
    # 'q' 키를 누르면 종료
    if cv2.waitKey(1) == ord('q'):
        break

# 객체 및 창 해제
video_writer.release()
cv2.destroyAllWindows()

위 코드에서는 pyautogui를 사용하여 화면 캡처를 수행하고, 해당 이미지를 numpy 배열로 변환한 후 OpenCV의 VideoWriter 클래스를 사용하여 동영상 파일에 저장합니다. 녹화를 종료하려면 ‘q’ 키를 누르면 됩니다.

화면 캡처

화면 캡처는 화면의 특정 영역이나 전체 화면을 이미지로 저장하는 것입니다. 다음은 화면 캡처를 위한 예제 코드입니다.

import pyautogui
import datetime

# 화면 캡처
image = pyautogui.screenshot()

# 캡처된 이미지 파일 이름 설정
filename = "screenshot_" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + ".png"

# 이미지 저장
image.save(filename)

위 코드에서는 pyautoguiscreenshot() 메소드를 사용하여 화면 캡처를 수행하고, datetime 모듈을 사용하여 캡처된 이미지 파일 이름에 타임스탬프를 추가합니다. 마지막으로 save() 메소드를 사용하여 이미지를 저장합니다.

이제 cx_Freeze를 사용하여 실행 파일로 변환한 프로그램에서 화면 녹화와 캡처를 수행할 수 있는 기능을 구현할 수 있습니다. 해당 코드를 실행하여 원하는 기능을 추가해보세요.

참고 자료