필요한 클래스 변수 추가
- __init__ 함수에 필요한 변수를 넣는다(이전에 이미 넣었던 변수 생략)
self.folder = None # 폴더의 경로 저장하는 변수
필요한 클래스 함수 추가 및 이벤트 함수와 연동하기
- 기능을 구현할 클래스 함수를 추가한다. WindowClass 안에 함수를 넣는다.
def dirOpen(self):
# 여기에 폴더 열어서 파일 여러개 여는 기능 구현할 예정
- 이벤트를 구현하기 위한 코드이다. __init__ 함수안에 넣어준다.
self.directoryOpen_action.triggered.connect(self.dirOpen) # 경로 열기 클릭 이벤트
dirOpen 함수 기능인 파일 열기 기능 구현
- getExistingDirectory : 폴더 선택 화면을 열리게 해준다. 위 함수를 이용해 폴더의 경로명을 저장한다.
self.folder = QFileDialog.getExistingDirectory(self)
- bool(self.folder) : 폴더를 열었는지 안열었는지 확인하는코드
- 만약 열지 않고 취소하거나 나갔다면 빈 문자열로 구성된 튜플이 리턴됨
- 폴더를 안열었는데 만들기나 미리보기를 제공하면 안되기 때문에 if문으로 검사할 필요 있음
if bool(self.folder):
# 만약 폴더를 선택한다면 이전 결과물 초기화
self.files_root = []
- 이전 결과물과 섞이지 않기 위해 self.files_root 초기화 하기
- os.walk를 이용해 폴더안 파일들 탐색 (root : 파일 경로, files : 파일들 이름 모은 리스트)
- os.path.join : 경로를 병합시켜준다, 이미지를 1개씩 열어야하기 때문에 폴더와 파일이름을 합쳐야함
- if문 : 이미지 확장자인것들만 file_root에 append 시킴, os.path.splitext는 (파일경로(확장자제외버전), 확장자)형식의 튜플을 만들어준다
if bool(self.folder):
# 만약 폴더를 선택한다면 이전 결과물 초기화
self.files_root = []
# 파일들을 다 저장하되 이미지 파일만 저장
for (root, directories, files) in os.walk(self.folder):
for file in files:
file_path = os.path.join(root, file) # file_path 변수에 파일 경로 1개 불러옴
# 이미지 확장자에 포함되는경우(이미지파일만 걸러냄)
if os.path.splitext(file_path)[1] == '.jpg' or os.path.splitext(file_path)[1] == '.png' or \
os.path.splitext(file_path)[1] == '.bmp':
self.files_root.append(file_path) # files_root에 이미지 경로 1개 추가
- if self.files_root : if문에 리스트 이름 그대로 넣으면 빈 리스트인지 검사 가능
- 값이 있으면 True 비어있으면 False가 된다
- 파일을 다 검사했어도 이미지가 없다면 빈 리스트가 될수도 있기 때문에 검사 필요
- 과정이 다 끝난 뒤, setEnable로 버튼 활성화하기
if bool(self.folder):
# ...코드 생략...
if self.files_root:
# 이제 미리보기와 이미지 만들고 저장하는 기능 이용하도록 버튼 활성화
self.preview_button.setEnabled(True)
self.generateAndSave_button.setEnabled(True)
'딥러닝 데이터를 늘리기 위한 이미지 제너레이터 만들기' 카테고리의 다른 글
6) 이미지 제너레이터 만들기 - 이미지 늘리고 저장하는 기능 추가 (0) | 2023.02.27 |
---|---|
5) 이미지 제너레이터 만들기 - 미리보기 기능 추가 (0) | 2023.02.27 |
3) 이미지 제너레이터 만들기 - 파일1개 여는 기능 추가 (0) | 2023.02.27 |
2) 이미지 제너레이터 만들기 - 만든 ui 연동하기 (0) | 2023.02.24 |
1) 이미지 제너레이터 만들기 - 기능 정의 및 ui디자인 짜기 (0) | 2023.02.22 |