PySimpleGUI + opencv

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()