필요한 클래스 변수 추가
- __init__ 함수에 필요한 변수를 넣는다
self.axes = []
# 원하는 레이아웃에 matplotlib를 연동되게 해주는 부분 미리 세팅
self.fig = plt.Figure()
self.canvas = FigureCanvas(self.fig)
self.plt_layout.addWidget(self.canvas)
필요한 클래스 함수 추가 및 이벤트 함수와 연동하기
- 기능을 구현할 클래스 함수를 추가한다. WindowClass 안에 함수를 넣는다.
def preview(self):
# 여기에 미리보기 제공하는 기능 구현할 예정
- 이벤트를 구현하기 위한 코드이다. __init__ 함수안에 넣어준다.
self.preview_button.clicked.connect(self.preview) # 미리보기 버튼 클릭 이벤트
preview 함수 기능인 파일 열기 기능 구현
- 제너레이터에 넣을 속성값을 프로그램에서 가져온다. 미리보기는 고정적으로 9개를 보여줄 예정이므로 count는 가져오지 않는다.
# 제너레이터에 넣을 속성값 프로그램에서 가져오기
horizontalFlip = self.horizontalFlip_comboBox.currentText() == 'True'
widthShiftRange = self.widthShiftRange_SpinBox.value()
heightShiftRange = self.heightShiftRange_spinBox.value()
rotationRange = self.rotationRange_spinBox.value()
shearRange = self.shearRange_spinBox.value()
zoomRange = self.zoomRange_spinBox.value()
verticalFlip = self.verticalFlip_comboBox.currentText() == 'True'
fillMode = self.fillMode_comboBox.currentText()
- ImageDataGenerator를 이용해 제너레이터 준비, 속성값에 그대로 대입하기
datagen = ImageDataGenerator(horizontal_flip=horizontalFlip, width_shift_range=widthShiftRange,
height_shift_range=heightShiftRange, rotation_range=rotationRange,
shear_range=shearRange, zoom_range=zoomRange,
vertical_flip=verticalFlip, fill_mode=fillMode)
- 이미지를 불러온후, 변형의 과정을 거쳐 실제 프로그램에 그리기
# 실제 프로그램에서 이미지 예시를 matplotlib를 이용해 보여주는 코드
img = load_img(self.files_root[0]) # 파일들중 첫번쨰 사진 불러오기
img = img.resize((500, 500)) # 이미지 크기 500X500으로 맞추기
x = img_to_array(img) # numpy 배열로 변형
x = x.reshape((1,) + x.shape)
idx = 0
axes = []
for batch in datagen.flow(x, batch_size=1):
axes.append(self.fig.add_subplot(3, 3, idx + 1))
axes[idx].imshow(array_to_img(batch[0]))
idx += 1
if idx == 9:
break
self.canvas.draw() # 이미지를 실제로 프로그램에 그려주는 코드
- 위의 코드까지 다 입력한 후 실행한 결과
'딥러닝 데이터를 늘리기 위한 이미지 제너레이터 만들기' 카테고리의 다른 글
7) 이미지 제너레이터 만들기 - 이미지 늘릴때 진행상황 프로그레스바로 나타내기 (0) | 2023.02.28 |
---|---|
6) 이미지 제너레이터 만들기 - 이미지 늘리고 저장하는 기능 추가 (0) | 2023.02.27 |
4) 이미지 제너레이터 만들기 - 파일 여러개 여는 기능 추가 (0) | 2023.02.27 |
3) 이미지 제너레이터 만들기 - 파일1개 여는 기능 추가 (0) | 2023.02.27 |
2) 이미지 제너레이터 만들기 - 만든 ui 연동하기 (0) | 2023.02.24 |