2021-01-08 09:08:02

어떤 디렉토리 내에 존재하는 모든 이미지 파일들을 cv2.imread 등의 방식으로 읽고 싶다면, 일단 각 이미지 파일의 경로를 알아야합니다. 저는 그것을 img_path_list라는 이름의 리스트에 하나씩 담아주도록 하겠습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
 
root_dir = 'C:/Users/Sim/Desktop/test' # 디렉토리
 
img_path_list = []
possible_img_extension = ['.jpg''.jpeg''.JPG''.bmp''.png'# 이미지 확장자들
 
for (root, dirs, files) in os.walk(root_dir):
    if len(files) > 0:
        for file_name in files:
            if os.path.splitext(file_name)[1in possible_img_extension:
                img_path = root + '/' + file_name
                
                # 경로에서 \를 모두 /로 바꿔줘야함
                img_path = img_path.replace('\\''/'# \는 \\로 나타내야함         
                img_path_list.append(img_path)
                             
print(img_path_list)
cs

 

위 코드에서 중요한 부분은 파일의 확장자를 체크하는 부분입니다. 디렉토리 내 많은 파일들 중에서 이미지 파일들의 경로만 리스트에 넣어줘야 하기 때문입니다. os.path.splitext() 함수를 이용해서 파일의 확장자만 따로 분리해서 읽은 후에 이미지 파일의 확장자인 경우에만 img_path_list라는 이름의 리스트에 추가하도록 했습니다.

 

위 코드를 실행하면, 바탕화면에 있는 test 디렉토리(C:\Users\Sim\Desktop\test) 내에 존재하는 모든 이미지 파일들의 경로를 리스트의 형태로 얻을 수 있습니다. 참고로 test 디렉토리 내부는 다음과 같은 트리 구조를 갖고 있습니다. 

 

 

이미지 파일과 텍스트 파일 등 다양한 파일들이 여러 폴더 내에 들어있는 상황입니다. 

 

위 코드를 통해 얻은 test 디렉토리 내 이미지들의 경로 리스트입니다. 

 

 

이미지 파일들의 경로만 리스트에 잘 담겨진 것을 확인하실 수 있습니다. 만약 디렉토리 내에 다른 확장자의 이미지들이 존재한다면, 위 코드에서 possible_img_extension 리스트에 추가해주시면 됩니다. 

 

관련 글

[python] 파일의 확장자를 알려주는 함수, os.path.splitext()

 

 

(이 글은 2021-4-2에 마지막으로 수정되었습니다.)