[OpenCV] OpenCV를 이용한 Python Project (이미지 슬라이드쇼 만들기)
업데이트:
OpenCV를 이용한 Python Project (이미지 슬라이드쇼 만들기)
개요
이번 프로젝트에서는 특정 폴더에 있는 모든 이미지 파일을 활용하여 간단한 이미지 슬라이드쇼를 구현합니다.
1. 프로젝트 개요
구현 기능
- 특정 폴더에 있는 이미지 파일 목록 읽기.
- 이미지를 전체 화면으로 출력하기.
- 일정 시간 동안 이미지를 화면에 출력 후 다음 이미지로 교체하기 (무한 루프 형식).
2. 관련 패키지 및 함수
2.1 os.listdir()
- 폴더 내 모든 파일 목록 불러오기
- 특정 확장자(.jpg 등)를 가진 파일만 필터링 가능.
import os
file_list = os.listdir('./images')
img_files = [file for file in file_list if file.endswith('.jpg')]
2.2 glob.glob()
- 특정 패턴의 파일 이름 불러오기
- 원하는 경로와 파일 형식을 지정하여 간단하게 파일 목록 생성 가능.
import glob
img_files = glob.glob('./images/*.jpg')
예시
- 현재 파일 경로와 다른 디렉토리에 이미지 파일이 있는 경우:
img_files = glob.glob('assets/images/*.jpg')
3. 코드 구현
3.1 이미지 파일명 확인
glob를 사용하여 이미지 파일 경로를 읽어온 후, 파일명을 출력합니다.
import glob
# assets 폴더 내 images 디렉토리에서 모든 JPG 파일 읽기
img_files = glob.glob('assets/images/*.jpg')
for f in img_files:
print(f)
실행 결과
아래와 같이 images 폴더 내 파일명이 출력됩니다.
3.2 전체 화면 출력 창 만들기
cv2.namedWindow와 cv2.setWindowProperty를 사용하여 전체 화면을 구현합니다.
import cv2
import glob
# 이미지 파일 읽기
img_files = glob.glob('assets/images/*.jpg')
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.setWindowProperty('image', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
cnt = len(img_files) # 이미지 파일 개수
idx = 0
while True:
img = cv2.imread(img_files[idx]) # 이미지 읽기
cv2.imshow('image', img)
# ESC 키를 누르면 종료
if cv2.waitKey(1000) == 27:
break
idx += 1
if idx >= cnt:
idx = 0
cv2.destroyAllWindows()
코드 설명
- 창 속성 설정:
cv2.WINDOW_NORMAL: 창 크기를 조정 가능하도록 설정.cv2.WINDOW_FULLSCREEN: 창을 전체 화면으로 변경.
- 이미지 출력:
cv2.imshow()로 이미지를 출력.- 이미지 파일 리스트를 반복적으로 순회하며 슬라이드쇼 구현.
- 키 입력 처리:
cv2.waitKey(1000): 1초(1000ms) 동안 키 입력 대기.- ESC 키(27)를 누르면 반복문 종료.
4. 결과
- 슬라이드쇼가 실행되며, 설정한 시간 간격으로 이미지를 전환합니다.
- ESC 키를 누르면 프로그램이 종료됩니다.
결론
이번 포스팅에서는 OpenCV와 Python을 사용해 간단한 이미지 슬라이드쇼를 구현했습니다.
이미지 파일을 동적으로 읽고 전체 화면으로 출력하는 이 방법을 응용해 더욱 다양한 프로젝트를 시도해보세요!
댓글남기기