OpenCV는 컴퓨터 비전과 이미지 처리에 있어서 가장 인기 있는 라이브러리 중 하나입니다.
이 강좌에서는 OpenCV를 사용하여 파일로 이미지를 저장하고 비디오를 저장하는 방법에 대해 상세히 설명하고 예제 코드를 제공합니다.
이 과정에서 파일 포맷 및 다양한 저장 옵션에 대해서도 알아보겠습니다.
1. OpenCV 소개
OpenCV(Open Source Computer Vision Library)는 실시간 컴퓨터 비전에 특화된 라이브러리로, 이미지 및 비디오 처리의 많은 기능을 제공합니다.
이미지 및 비디오 파일을 저장하는 기능은 OpenCV의 핵심 기능 중 하나입니다. 이 강좌를 통해 OpenCV를 설치하고 사용하는 방법을 알아볼 것입니다.
2. OpenCV 설치하기
OpenCV는 다양한 플랫폼에서 지원되며, Python에서 사용하기 위해 설치하는 방법은 다음과 같습니다.
pip
패키지 관리자를 사용하여 간단하게 설치할 수 있습니다.
pip install opencv-python
설치가 완료되면 Python 코드에서 OpenCV를 사용할 준비가 됩니다.
아래와 같이 설치 여부를 간단히 확인할 수 있습니다.
python
import cv2
print(cv2.__version__)
3. 이미지 저장하기
OpenCV를 사용하여 이미지를 파일로 저장하는 것은 매우 간단합니다.
주로 사용할 수 있는 함수는 cv2.imwrite()
입니다. 이 함수는 저장할 파일 이름과 이미지 데이터를 인자로 받습니다.
3.1 기본 이미지 저장 예제
아래 예제는 간단한 이미지를 생성한 후, cv2.imwrite()
를 사용하여 파일로 저장하는 코드입니다.
python
import cv2
import numpy as np
# 이미지 생성 (검은 배경의 흰색 사각형)
image = np.zeros((300, 300, 3), dtype='uint8')
image[:] = [255, 255, 255] # 흰색으로 채우기
# 이미지 저장
cv2.imwrite('white_square.png', image)
print("이미지 저장 완료: white_square.png")
위 코드를 실행하면 현재 디렉토리에 “white_square.png”라는 이름의 이미지 파일이 저장됩니다.
3.2 다양한 파일 포맷
OpenCV는 다양한 이미지 포맷을 지원합니다. 대표적으로 PNG
, JPG
, BMP
, TIFF
등이 있습니다.
파일 포맷에 따라 이미지를 저장할 때, 확장자만 변경하면 됩니다. 예를 들어, JPG 포맷으로 저장하려면 다음과 같습니다.
python
cv2.imwrite('white_square.jpg', image)
4. 비디오 저장하기
비디오를 저장할 때는 cv2.VideoWriter
클래스를 사용합니다.
이 클래스는 비디오 파일을 생성하고, 각 프레임을 추가하는 함수 write()
를 제공합니다.
4.1 비디오 작성 기본 예제
아래 예제는 기본 비디오를 작성하는 코드입니다.
검은 배경에서 흰색 사각형이 움직이는 비디오를 생성하고 저장합니다.
python
# 비디오 작성기 설정
fourcc = cv2.VideoWriter_fourcc(*'XVID') # 코덱 지정
video_out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
for i in range(100):
# 프레임 생성 (검은 배경)
frame = np.zeros((480, 640, 3), dtype='uint8')
# 사각형의 좌표를 변경하여 이동 효과 추가
cv2.rectangle(frame, (i * 5, 100), (i * 5 + 100, 200), (255, 255, 255), -1)
# 프레임 추가
video_out.write(frame)
# 리소스 해제
video_out.release()
print("비디오 저장 완료: output.avi")
4.2 비디오 포맷 및 속성 설정
cv2.VideoWriter_fourcc()
를 사용하여 비디오 코덱을 설정할 수 있습니다. 다음과 같은 코덱을 사용할 수 있습니다.
XVID
X263
MJPG
MP4V
두 번째 인자는 초당 프레임 수(FPS)이며, 세 번째 인자는 비디오 프레임의 해상도입니다.
예를 들어, 고해상도 비디오를 원한다면 해상도를 (1920, 1080)
으로 설정할 수 있습니다.
4.3 비디오 촬영 후 저장하기
웹캠에서 촬영한 비디오를 실시간으로 저장할 수도 있습니다.
아래 코드는 웹캠의 비디오를 녹화하여 파일로 저장하는 예제입니다.
python
cap = cv2.VideoCapture(0) # 웹캠 열기
video_out = cv2.VideoWriter('webcam_output.avi', fourcc, 20.0, (640, 480))
while True:
ret, frame = cap.read()
if not ret:
break
video_out.write(frame) # 프레임 저장
cv2.imshow('frame', frame) # 웹캠 프레임 표시
if cv2.waitKey(1) & 0xFF == ord('q'):
break # 'q' 키 입력 시 종료
# 리소스 해제
cap.release()
video_out.release()
cv2.destroyAllWindows()
5. 이미지 및 비디오 저장할 때 주의사항
이미지를 저장할 때 주의해야 할 점은 파일 경로와 파일 권한입니다.
지정한 경로에 쓰기 권한이 없다면 이미지나 비디오를 저장하는 데 실패할 수 있습니다.
또한, 이미지를 저장하기 전에 이미지가 올바르게 로드되었는지도 확인해야 합니다.
5.1 디렉토리 체크
저장할 디렉토리가 존재하는지 확인하고, 만약 없다면 디렉토리를 생성하는 방법도 구현할 수 있습니다.
python
import os
# 디렉토리 체크 및 생성
output_dir = 'output_images'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 이미지 저장
cv2.imwrite(os.path.join(output_dir, 'image.png'), image)
5.2 파일 형식 확인
사용자가 입력하는 파일 이름에 따라 적절한 파일 형식을 보장하기 위해 입력 검증을 하는 것도 좋습니다.
예를 들어, 이미지 파일 확장자가 없거나 잘못된 경우 사용자에게 알림을 줄 수 있습니다.
6. 마무리
이번 강좌에서는 OpenCV를 사용하여 이미지 및 비디오를 파일로 저장하는 법에 대해 알아보았습니다.
OpenCV는 매우 강력한 기능을 가지며, 다양한 이미지 및 비디오 처리 작업을 수행할 수 있습니다.
이러한 기본적인 파일 저장 기능을 익히면 앞으로 더 많은 OpenCV 기능을 활용할 수 있을 것입니다.
OpenCV를 배우는 과정에서는 다양한 프로젝트를 통해 실력을 쌓는 것이 중요합니다.
여러분이 직접 이미지를 저장해 보고, 비디오를 만들어 보는 과정에서 많은 것을 배울 수 있을 것입니다.
감사합니다!