코딩. 캠핑

OpenCV Python 입문(3) - 이미지 슬라이드쇼 만들기 본문

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초마다 넘어가면서 반복되는 슬라이드다.

사진마다 해상도가 달라서 이상하게 보이지만 정상이다.

아무튼 짱 잘됨.

Comments