[OPencv] opencv를 이용한 python project(이미지 슬라이드쇼 만들기)
업데이트:
1. 이미지 슬라이드 쇼 개요
특정 폴더에 있는 모든 이미지 파일을 슬라이드 쇼로 만들기
구현 기능
- 특정 폴더에 있는 이미지 파일 목록 읽기
- 이미지를 전체 화면으로 출력하기
- 일정 시간동안 이미지를 화면에 출력 후 다음 이미지로 교체하기 -> 무한루프 형식으로
2. 관련 함수 패키지 및 함수에 대해 알아보기
os.listdir()
# 예시 - os
import os
file_list = os.listdir('.\\images')
img files = [file or file in file_list if file.endswith('.jpg')]
모든 파일 목록을 불러올 수 있고 그 중에서 jpg로 되어 있는 파일만 찾아서 불러올 수 있다. glob.glob()
# 예시 - glob
import glob
img_files = glob.glob('.\\images\\*.jpg')
glob 패키지는 특정 패턴의 문자열 이름을 다 불러올 수 있다. 위와 같이 images 폴더에 있는 파일들을 불러와도 되지만 현재 파일이 있는 곳에 images라는 폴더를 냅두지 않고 저처럼 assets이라는 폴더안에 모든 그림파일들을 넣어두었다면 glob.glob(‘assets/images/*.jpg’) 이렇게 바꿔주면 된다.
3.코드 구현하기
3-1.images 폴더안에 있는 파일명들 확인하기
import glob
# 현재 python 파일이 있는 위치에 images 폴더를 옮겨놓은 경우 위 예시처럼 바꿔주어야 함
img_files = glob.glob('assets/images/*.jpg')
for f in img_files:
print(f)
그럼 다음과 같이 images 안에 있는 파일명들이 나열된 것을 확인할 수 있다.

3-2.전체 화면 영상 출력 창 만들기
cv2.nameWindow('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)
if cv2.waitKey(1000) == 27: #ESC
break
idx+=1
if idx>=cnt:
idx=0
cv2.destroyALLWindows()
- 먼저 cv2.WINDOW_NORMAL 속성의 창을 만들고 cv2.setWindowProperty() 함수를 사용하여 전체 화면 속성으로 바꿔준다.
- 그 뒤에 img 를 while 문에서 불러와서 ESC 키(27)를 누르기 전까지 반복적으로 사진을 imread 하면 끝!
댓글남기기