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