広告

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

OpenCV
広告
けんろう
けんろう

PySimpleGUIでは、OpenCVを使って、PCのカメラで撮影した映像を表示するアプリも自作できます。公式クックブックにデモが載っています。

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

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

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

【無料オンライン】ゼロから始めるPythonプログラミング入門講座(週5開催) テックジム

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

広告

PCカメラで撮影した映像を表示するアプリ

このアプリは、PCのカメラで撮影した映像を表示します。

【AIジョブカレ】人工知能技術専門プログラミングスクール

サンプルコード

# 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をコピーしました