#업로드 버튼 구현
upload=Button(top,text="Upload an sound",command=upload_sound,padx=10,pady=5)
upload.configure(background='#364156', foreground='white',font=('arial',10,'bold')) #버튼 색깔
upload.pack(side=BOTTOM, pady=50) # 버튼의 위치 , TOP, BOTTOM, LEFT, RIGHT 를 쓸 수 있음
upload.place(relx=0.2, rely=0.8) # <--- 이 부분 추가
#분류 버튼 구현
classify_bt=Button(top,text="classify an sound",command= classify ,padx=10,pady=5)
classify_bt.configure(background='#364156', foreground='white',font=('arial',10,'bold')) #버튼 색깔
classify_bt.pack(side=TOP, pady=50) # 버튼의 위치 , TOP, BOTTOM, LEFT, RIGHT 를 쓸 수 있음
classify_bt.place(relx=0.6, rely=0.8) # <--- 이 부분 추가
#12. 분류하는 버튼을 판에 올립니다.
background='white', foreground='black' <-- 이 부분 변경
#업로드 버튼 구현
upload=Button(top,text="Upload an sound",command=upload_sound,padx=10,pady=5)
upload.configure(background='white', foreground='black',font=('arial',10,'bold')) #버튼 색깔
upload.pack(side=BOTTOM, pady=50) # 버튼의 위치 , TOP, BOTTOM, LEFT, RIGHT 를 쓸 수 있음
upload.place(relx=0.2, rely=0.8)
#분류 버튼 구현
classify_bt=Button(top,text="classify an sound",command= classify ,padx=10,pady=5)
classify_bt.configure(background='white', foreground='black',font=('arial',10,'bold')) #버튼 색깔
classify_bt.pack(side=TOP, pady=50) # 버튼의 위치 , TOP, BOTTOM, LEFT, RIGHT 를 쓸 수 있음
classify_bt.place(relx=0.6, rely=0.8)
#13. 소리를 재생하는 함수를 생성합니다.
#별도의 코드창에서 !pip install pygame 을 실행해서 pygame 을 설치하세요.
from pygame import mixer # 소리 재생 모듈입니다.
def Play():
if file_path: # file_path 에 음원의 위치와 이름이 들어있다면
mixer.init() # 초기화 작업 수행
mixer.music.load(file_path) # 음원을 불러들임
mixer.music.play() # 음원 재생
#14. 소리 재생 버튼을 만듭니다.
btn_play = Button( top, text = 'Play', width = 10, font = ( 'Courier' , 10), command = Play )
btn_play.place( x=350, y=455 ) # 버튼의 위치를 지정합니다.
#15. 바탕화면 색깔을 변경합니다.
top.configure(background='#e5ddff') # 판의 바탕 색깔, 구글에서 #CDCDCD 검색
label = Label( top, background='#e5ddff' , font =('arial', 45, 'bold') )
#16. 분류 버튼을 눌렀을때 개사진과 고양이 사진이 화면에 출력되겠금 구글에서 개사진과
고양이 사진을 확장자 png 파일로 구해서 c 드라이브 밑에 data 밑에 catimage.png,
dogimage.png 로 저장하시오 !
#17. classify 함수에 이미지 전처리하는 코드 3줄을 upload 함수로 옮기시오 !
global x_test_features
file_path=filedialog.askopenfilename()
x_test = librosa.load(file_path)[0]
wave_rate = librosa.load(file_path)[1]
지금까지의 코드: https://cafe.daum.net/oracleoracle/Sl3Y/609
#18. 다운로드 받은 개사진과 고양이 사진을 분류 결과로 표시하기
def classify():
pred = model.predict( x_test_features.reshape( 1, 41, ) ) # 모델에 넣고 예측해라
a = np.argmax(pred) # 가장 큰 원소의 인덱스 번호를 추출합니다.
if a == 0:
sign='This is a cat'
image_path = 'c:\\\\\\\\data\\\\\\\\catimage.png'
else:
sign='This is a dog'
image_path = 'c:\\\\\\\\data\\\\\\\\dogimage.png'
uploaded = Image.open(image_path) # os 에 있는 이미지를 불러옵니다.
uploaded.thumbnail(( (top.winfo_width()/2.25), (top.winfo_height()/2.25) )) # 사이즈를 조절하고
img = ImageTk.PhotoImage(uploaded) # 사진을 img 에 담습니다.
sign_image.configure(image=img) # 불러온 사진을 sign_image 라는 변수로 구성
sign_image.image = img # 불러온 사진을 sign_image.image 에 담습니다.
sign_image.pack() # 불러온 사진을 완전히 지정하고
sign_image.place(relx=0.35, rely=0.2) # 위치 시킵니다.
label.configure(foreground='#011638', text= sign)
그리고 맨 아래에 play 버튼 구현 코드 밑에 사진을 붙이는 코드를 추가 합니다.
sign_image = Label(top)
sign_image.pack( side=BOTTOM, expand=True )
sign_image.place(relx =0.5, rely=0.3)
출력되는 글씨의 위치를 조정합니다.
label.configure(foreground='#011638', text= sign)
label.place(x=220, y=50) # <--- 이 부분 추가
지금까지의 전체 코드 : https://cafe.daum.net/oracleoracle/Sl3Y/613
#19. 사진 아래에 확률 그래프가 출력될 수 있도록 함수를 만드시오 !
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
def Draw_graph(pred):
fig = plt.Figure( figsize=( 7, 0.5 ), facecolor='#e5ddff' ) # 그래프의 크기와 색깔을 지정
plot = FigureCanvasTKAgg( fig, master=top) # tkinter 위에 그래프 올리기
# 확률 숫자 생성
y = [ 'cat %0.3f'%pred[0][0], 'dog %0.3f'%pred[0][1] ] # 소수점이하 3번째까지만 2개의 확률저장
# 그래프 그리기
fig.add_subplot(1,1,1).barh( y , pred[0], color='lightpink') # 그래프 그리기 , 막대 색깔 설정
plot.draw() # 그래프 그리기
plot.get_tk_widget().pack() # 그래프 설정을 저장하기
plot.get_tk_widget().place( x =150, y=400 ) # 그래프 위치 지정하기
지금까지 전체코드 :https://cafe.daum.net/oracleoracle/Sl3Y/614