Dev(개발)/OpenCV(Python)
OpenCV Python 입문(3) - 이미지 슬라이드쇼 만들기
진영_8
2021. 1. 27. 11:50
이미지 슬라이드쇼 만들기
특정 폴더에 있는 이미지 파일(*. jpg) 목록 읽기에는 두 가지 방법이 있다.
os.listdir()
import os
file_list = os.listdir('.\\images')
img_files = [file for file in file+list if file.endswith('.jpg')]
listdir로 모든 파일목록을 불러와서 jpg로 되어있는 파일을 찾아서 img_files에 담아준다.
glob.glob()
import glob
img files = glob.glob('.\\image\\*.jpg')
image 폴더에 있는 모든 jpg를 가져온다.
여기서 나는 glob을 이용해서 이미지를 읽어오려고 한다.
import glob
img_files = glob.glob('.\\images\\*.jpg')
for f in img_files:
print(f)
먼저 이미지 폴더에 있는 사진을 읽어오는지 테스트해보자.
이제 이미지도 확인했으니 본격적으로 슬라이드쇼를 만들어보자.
import sys
import glob
import cv2
# images에 있는 모든 jpg 파일을 img_files 리스트에 추가
img_files = glob.glob('.\\images\\*.jpg')
# 이미지 없을때 예외처리
if not img_files:
print("jpg 이미지가 읎어요..")
sys.exit()
# 전체화면으로 jinmi 창 생성
cv2.namedWindow('jinmi',cv2.WINDOW_NORMAL)
cv2.setWindowProperty('jinmi', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
# 슬라이드 쇼 반복을 위한 반복문
count = len(img_files)
index = 0
while True:
img = cv2.imread(img_files[index])
# 예외처리
if img is None:
print("이미지를 불러오는데 실패했습니다.")
break
# ESC가 입력되면 break
cv2.imshow('jinmi', img)
if cv2.waitKey(1000) == 27:
break
# index가 이미지 리스트보다 커지거나 같아지면 다시 0으로
index += 1
if index >= count :
index = 0
cv2.destroyAllWindows()
cv2 함수를 이용해서 전체 화면으로 생성되어서, esc 입력 없이는 무한으로 1초마다 넘어가면서 반복되는 슬라이드다.
아무튼 짱 잘됨.