rotate関数の引数には、以下を指定します。
・cv2.ROTATE_90_CLOCKWISE : 時計回り90度
・cv2.ROTATE_180 : 180度回転
・cv2.ROTATE_90_COUNTERCLOCKWISE : 反時計回り90度
サンプルコードの実行手順
1. PySimpleGUIとOpenCVがインストールされた環境の構築以下のページを参照して、環境を構築します。
・PySimpleGUIとOpenCVをインストールしてwebカメラの映像をウインドウを表示する
2. サンプルプログラムの作成と実行
以下のファイルを保存して、実行します。ラジオボタンをクリックすると回転角度が変化します。
psgui_opencv_rotate.py
import PySimpleGUI as sg
import cv2
sg.theme('SystemDefault')
layout = [
[
sg.Radio(key = 'r0', text='なし', group_id='r', default=True),
sg.Radio(key = 'r90', text='時計回り90度', group_id='r'),
sg.Radio(key = 'r180', text='時計回り180度', group_id='r'),
sg.Radio(key = 'r270', text='反時計回り90度', group_id='r')
],
[sg.Image(key='img1')]
]
# webカメラをキャプチャー
capture = cv2.VideoCapture(0)
window = sg.Window("webカメラ画面", layout=layout, finalize=True)
# イベントループ
while True:
event, values = window.read(timeout=50)
if event == sg.WIN_CLOSED:
break
rv, frame = capture.read()
if rv is True:
rotated = frame
if values is not None and values['r90'] == True:
rotated = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE)
if values is not None and values['r180'] == True:
rotated = cv2.rotate(frame, cv2.ROTATE_180)
if values is not None and values['r270'] == True:
rotated = cv2.rotate(frame, cv2.ROTATE_90_COUNTERCLOCKWISE)
img = cv2.imencode('.png', rotated)[1].tobytes()
window['img1'].update(data=img)
capture.release()
window.close()
・実行方法
以下のコマンドを実行します
python3 psgui_opencv_rotate.py
関連情報
・PySimpleGUIで画像を表示する・PySimpleGUIでラジオボタン要素の初期選択状態を設定する
・PySimpleGUIに関する他の記事はこちらを参照してください。
・OpenCVに関する他の記事はこちらを参照してください。
0 件のコメント:
コメントを投稿