2022年4月14日木曜日

PySimpleGUIとOpenCVでwebカメラ画像をタイル配置表示する

PySimpleGUIとOpenCVでwebカメラ画像をタイル配置表示するには、以下のサンプルプログラムのようにrepeat関数を使用します。
repeat関数の引数は以下になります。
・元画像
・垂直方向の繰り返し回数
・水平方向の繰り返し回数
この例では、いったんキャプチャした画像を1/4に縮小してから、タイル配置表示しています。

サンプルコードの実行手順

1. PySimpleGUIとOpenCVがインストールされた環境の構築
以下のページを参照して、環境を構築します。
PySimpleGUIとOpenCVをインストールしてwebカメラの映像をウインドウを表示する

2. サンプルプログラムの作成と実行
以下のファイルを保存して、実行します。
psgui_opencv_repeat.py
import PySimpleGUI as sg
import cv2


sg.theme('SystemDefault')
layout = [
  [sg.Image(key='img1')]
]

# webカメラをキャプチャー
capture = cv2.VideoCapture(0)

# webカメラの解像度を取得して、1/4にする
width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)/4)
height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)/4)
window = sg.Window("webカメラ画面", layout=layout, finalize=True)
# イベントループ
while True:
  rv, frame = capture.read()
  if rv is True:
    # 高さ・幅を半分にリサイズして縮小する
    resized = cv2.resize(frame, (width, height))
    # 画像を繰り返してタイル配置
    repeated = cv2.repeat(resized, 2, 3)
    # pngに変換してImage更新
    img = cv2.imencode('.png', repeated)[1].tobytes()
    window['img1'].update(data=img)

  event, values = window.read(timeout=50)
  if event == sg.WIN_CLOSED:
    break

capture.release()
window.close()

・実行方法
以下のコマンドを実行します
python3 psgui_opencv_repeat.py

関連情報

PySimpleGUIで画像を表示する

・PySimpleGUIに関する他の記事はこちらを参照してください。

・OpenCVに関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿