import PySimpleGUI as sg import cv2 import numpy as np #opencv img_org = cv2.imread("Bus.jpg") img = cv2.imread("Bus.jpg") h, w = img.shape[:2] dx,dy,degree = 0.0, 0.0, 0.0 # セクション1 - オプションの設定と標準レイアウト sg.theme('Dark Blue 3') layout = [ [sg.Text('Python GUI')], [sg.Text("ファイル"), sg.InputText(), sg.FileBrowse(key="file1")], [sg.Text('角度', size=(15, 1)), sg.InputText(default_text='0.0',key="degree")], [sg.Text('Xshift', size=(15, 1)), sg.InputText(default_text='0.0',key="Xshift")], [sg.Text('Yshift', size=(15, 1)), sg.InputText(default_text='0.0',key="Yshift")], [sg.Submit(button_text='実行ボタン')], [sg.Submit(button_text='保存ボタン')] ] # セクション 2 - ウィンドウの生成 window = sg.Window('処理パラメータ入力', layout) # セクション 3 - イベントループ while True: event, values = window.read() if event is None: print('exit') break if event == '実行ボタン': print(values) show_message = "角度:" + values["degree"] + 'が入力されました。\n' show_message += "X:" + values["Xshift"] + 'が入力されました。\n' show_message += "Y:" + values["Yshift"] + "が入力されました。" print(show_message) degree = float(values["degree"]) dx =float(values["Xshift"]) dy =float(values["Yshift"]) #平行移動 afn_mat = np.float32([[1,0,dx],[0,1,dy]]) img_affine = cv2.warpAffine(img,afn_mat,(w,h)) #角度 rot_mat = cv2.getRotationMatrix2D((w/2,h/2),degree,1) img_affine = cv2.warpAffine(img_affine,rot_mat,(w,h)) #アルファブレンド alpha = 0.3 img_alpha = cv2.addWeighted(img_org, alpha, img_affine, 1 - alpha, 0) cv2.imshow("rotation",img_alpha) # ポップアップ sg.popup(show_message) if event == '保存ボタン': wfile='last_img_D'+values["degree"]+'_X'+values["Xshift"]+'_Y'+values["Yshift"]+'.tif' show_message=wfile+'を保存しました\n' print(show_message) cv2.imwrite(wfile,img) ''' #平行移動 #dx =float(values[1]) #dy =float(values[2]) afn_mat = np.float32([[1,0,dx],[0,1,dy]]) img = cv2.warpAffine(img,afn_mat,(w,h)) #角度 #degree = float(values[0]) rot_mat = cv2.getRotationMatrix2D((w/2,h/2),degree,1) img = cv2.warpAffine(img,rot_mat,(w,h)) cv2.imshow("rotation",img) ''' # セクション 4 - ウィンドウの破棄と終了 window.close()