【PythonでGUIアプリ入門】OpenCV、PySimpleGUIで、PCカメラで撮影した映像を表示するアプリの作り方

OpenCV
けんろう
けんろう

PySimpleGUIでは、OpenCVを使って、

PCのカメラで撮影した映像を表示するアプリも自作できます。

公式クックブックにデモが載っています。

この記事では、公式クックブックに載っている、OpenCVを使って、PCカメラで撮影した映像を表示するアプリを作る方法を紹介します。

この記事に載っているサンプルコードをコピーして、Pythonで実行すれば、簡単に動きを確認できますので、是非試してみて下さい。

この記事では、初心者にもわかりやすいように、各処理の内容を、サンプルコード内にコメントとして載せています。

人工知能技術専門プログラミングスクール「AIジョブカレ」の無料説明会参加、講座申込み
スポンサーリンク

今回作成するアプリ

PCのカメラで撮影した映像を表示するアプリを作成します。

Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクールの無料説明会申込

準備

PySimpleGUIのインストールの仕方は、以下の記事で紹介しています。

サンプルコード

# https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_OpenCV_Webcam.py

#!usr/bin/env python
# -*- coding: utf-8 -*-

import PySimpleGUI as sg
import cv2
import numpy as np

# メイン関数
def main():

    sg.theme('Black')

    # レイアウト(1行目:テキスト、2行目:映像画面、3行目:ボタン、ボタン、ボタン)
    layout = [[sg.Text('OpenCVによるカメラデモ ', size=(40, 1), justification='center', font='Helvetica 20')],
                  [sg.Image(filename='', key='image')],
                  [sg.Button('Record', size=(10, 1), font='Helvetica 14'),sg.Button('Stop', size=(10, 1), font='Any 14'),sg.Button('Exit', size=(10, 1), font='Helvetica 14'), ]]

    # ウィンドウの生成
    window = sg.Window(' デモアプリ - OpenCVによるカメラアプリ',layout, location=(800, 400))

    # キャプチャするカメラを設定
    cap = cv2.VideoCapture(0)

    recording = False

    # イベントループ
    while True:

        # イベント取得
        event, values = window.read(timeout=20)

        # 「Exit」ボタン押下時、ウィンドウ右上の×押下時の処理
        if event == 'Exit' or event == sg.WIN_CLOSED:
            return

        # 「Record」ボタン押下時の処理
        elif event == 'Record':
            # 撮影を開始する
            recording = True

        # 「Stop」ボタン押下時の処理
        elif event == 'Stop':
            # 撮影を停止する
            recording = False

            # 映像を消す
            img = np.full((480, 640), 255)
            imgbytes = cv2.imencode('.png', img)[1].tobytes()
            window['image'].update(data=imgbytes)

        # 録画フラグがTrueなら、撮影を開始する
        if recording:
            # カメラ映像を取得する
            ret, frame = cap.read()
            # 映像をメモリにエンコードする
            imgbytes = cv2.imencode('.png', frame)[1].tobytes()  # ditto
            # 映像を表示する
            window['image'].update(data=imgbytes)

# メイン関数をCALL
main()

動かし方

実行すると、下図のようなウィンドウが立ち上がります。

「Record」ボタンを押すと、撮影が始まり、PCカメラ映像が画面に表示されます。

「Stop」ボタンを押すと、撮影が停止します。

\ Pythonでプログラムを作るのなら、安くて環境構築も楽なラズパイがおすすめです。 /

まとめ

今回は、Pythonライブラリである、PySimpleGUI、OpenCVを使い、PCカメラで撮影した映像を表示するアプリの作り方を紹介しました。

コメント

タイトルとURLをコピーしました