[python] OpenCV를 사용하여 이미지에서 동영상 텍스트 추가하기

이미지나 동영상에 텍스트를 추가하는 것은 데이터 시각화나 영상 편집에서 매우 유용합니다. 이번에는 Python의 OpenCV 라이브러리를 사용하여 이미지에서 동영상 텍스트를 추가하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

먼저, OpenCV와 numpy 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install opencv-python
pip install numpy

이미지 로드 및 텍스트 추가

import cv2
import numpy as np

# 이미지 로드
image = cv2.imread("image.jpg")

# 텍스트 추가할 위치 설정
text_x = 50
text_y = 50
text = "Hello, World!"

# 텍스트를 이미지에 추가하기 위해 텍스트의 폰트, 색상, 두께 등을 설정
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
font_color = (0, 0, 255)  # BGR 형태로 색상 지정
font_thickness = 2

# 이미지에 텍스트 추가
cv2.putText(image, text, (text_x, text_y), font, font_scale, font_color, font_thickness)

# 결과 이미지 보여주기
cv2.imshow("Result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서는 먼저 OpenCV의 imread 함수를 사용하여 이미지를 로드합니다. 추가할 텍스트의 위치를 text_xtext_y 변수로 설정하고, text 변수에는 추가할 텍스트 내용을 지정합니다.

텍스트를 이미지에 추가하기 위해 putText 함수를 사용합니다. 이 함수는 다양한 매개변수를 가지고 있으며, 폰트, 색상, 두께 등을 설정할 수 있습니다.

추가한 텍스트가 있는 이미지를 imshow 함수를 사용하여 보여줍니다. waitKey 함수를 사용하여 키보드 입력을 기다린 후 destroyAllWindows 함수로 모든 창을 닫습니다.

위 코드를 실행하면 원본 이미지에 “Hello, World!”라는 텍스트가 추가된 결과를 확인할 수 있습니다.

동영상에 텍스트 추가

이번에는 이미지가 아닌 동영상에 텍스트를 추가하는 방법을 알아보겠습니다. 동영상은 연속된 이미지의 모음이므로, 이미지에 텍스트를 추가하는 방식과 비슷합니다.

import cv2
import numpy as np

# 동영상 파일 열기
video = cv2.VideoCapture("video.mp4")

# 동영상의 프레임 사이즈 가져오기
frame_width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))

# VideoWriter 객체를 생성하여 동영상을 저장할 파일 설정
output = cv2.VideoWriter("output.mp4", cv2.VideoWriter_fourcc(*"mp4v"), 30, (frame_width, frame_height))

# 텍스트 추가할 위치 설정
text_x = 50
text_y = 50
text = "Hello, World!"

# 텍스트를 이미지에 추가하기 위해 텍스트의 폰트, 색상, 두께 등을 설정
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
font_color = (0, 0, 255)  # BGR 형태로 색상 지정
font_thickness = 2

while True:
    # 동영상에서 프레임 읽기
    ret, frame = video.read()
    
    if not ret:
        break
    
    # 프레임에 텍스트 추가
    cv2.putText(frame, text, (text_x, text_y), font, font_scale, font_color, font_thickness)
    
    # 추가된 프레임을 출력 동영상에 저장
    output.write(frame)
    
    # 결과 프레임 보여주기
    cv2.imshow("Result", frame)
    
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

# 사용한 객체 해제
video.release()
output.release()
cv2.destroyAllWindows()

위 코드에서는 VideoCapture를 사용하여 동영상 파일을 엽니다. VideoWriter 객체를 생성하여 결과 동영상을 저장하기 위해 필요한 설정을 합니다.

while 루프를 사용하여 동영상의 프레임을 읽어오고, 각 프레임에 텍스트를 추가합니다. 추가된 프레임을 결과 동영상에 저장하고, 결과 프레임을 보여줍니다.

waitKey 함수를 사용하여 키보드 입력을 체크하고, “q” 키를 누르면 프로그램이 종료됩니다.

위 코드를 실행하면 동영상에서 각 프레임에 “Hello, World!”라는 텍스트가 추가되어 있는 결과 동영상을 얻을 수 있습니다.

결론

이번에는 Python의 OpenCV 라이브러리를 사용하여 이미지와 동영상에 텍스트를 추가하는 방법을 알아보았습니다. 이를 활용하여 데이터 시각화나 영상 편집에 유용하게 활용할 수 있습니다.

더 자세한 내용은 OpenCV 공식 문서를 참고하시기 바랍니다.