반응형
계층의 개수에 따라 for 문을 추가하면 되는 코드입니다.
import glob, os, natsort, cv2
root = "some_path"
file_list = []
for img_folder in natsort.natsorted(glob.glob(os.path.join(root, '*'))):
folder_name = img_folder.split('/')[-1]
for img_file in natsort.natsorted(glob.glob(os.path.join(img_folder, '*'))):
filename = img_file.split('/')[-1]
file_list.append(img_file)
img = cv2.imread(img_file)
뎁스가 두 계층 있는 데이터 셋을 건든다고 가정해봅시다. 즉 아래와 같은 계층입니다.
root
|
-----class
| |
| -----file
-----class
|
-----file
여기서 주목해야할 것은 glob.glob, os.path.join, natsort입니다.
glob.glob(path) -> list
os.path.join(separate_path) -> str
natsort.natsorted(list) -> list
natsort.natsorted는 sort.sorted와 비슷한 기능을 하지만 폴더가 숫자로 되어 있는경우 ex) 1, 2, 3, 4 ~ 100, 101~
sort.sorted는 1, 100 이런식으로 정렬하게 됩니다. 이때 해결방법은 앞에 0001, 0002 이런식으로 0을 붙여주거나 하는 것인데, natsort는 그럴 필요 없이 정렬해 줍니다.
반응형
'Python' 카테고리의 다른 글
pip install opencv-python 에러 (0) | 2021.07.13 |
---|---|
[opencv] ImportError: libGL.so.1: cannot open shared object file: No such file or directory (0) | 2021.03.29 |
opencv flip (0) | 2021.03.25 |
opencv 히스토그램 평활화, 스트레칭 (0) | 2021.03.25 |
Python 원하는 GPU 사용하기 (0) | 2021.03.22 |