PR

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

OpenCV
スポンサーリンク
けんろう
けんろう

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

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

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

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

今回作成するアプリ

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

準備

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カメラで撮影した映像を表示するアプリの作り方を紹介しました。

オススメ

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

Raspberry Pi は、Raspberry Pi Foundationによって開発された低価格で小型のシングルボードコンピュータです。最初は教育目的で2012年にリリースされましたが、その手頃な価格と高性能により、教育用にとどまらず、さまざまなプロジェクトやプロトタイピングのプラットフォームとして広く利用されています。Raspberry Piは、LinuxベースのOSを主に使用し、簡単にカスタマイズ可能であるため、プログラミングやエレクトロニクスの教育、IoTデバイス、ホームオートメーション、メディアセンターなどに活用されています。

オススメ

AI(人工知能)特化型プログラミングスクール「Aidemy Premium」

Aidemy Premiumは、AIや機械学習などの最先端技術の修得に留まらず、それらを活用して目標達成を実現するまでを一気通貫して支援するオンラインコーチングサービスです。

こんな思いを持っている人にオススメ
・AIエンジニア/データサイエンティストにキャリアチェンジしたい
・業務課題(研究課題)をAIを使って解決したい
・教養としてAIについて知りたい
・AIに関してのスキルを身に着け就職活動に活かしたい…

オススメポイント
・3ヶ月間集中して「AIプログラミング」を修得するオンラインコーチングサービスです。
・完全なプログラミング初心者から研究者にまで幅広く優良なコンテンツを提供します。
・通常のプログラミングスクールとは異なり、受講者の進捗管理を徹底して行います。
・専属メンターがAIの学び方から徹底的にコーチングします。
・完全オンライン完結なので、東京以外に在住・在勤の方も気兼ねなくお申込み頂けます。

実績
・日本最大級のAI/人工知能プログラミングスクール
・SaaS型AI学習サービス「Aidemy」会員登録者数 55,000名突破
・法人向けAI内製化支援サービス「Aidemy Business」導入企業数 120社突破
・第16回 日本e-Learning大賞「AI・人工知能特別部門賞」受賞
・「HRアワード2019」プロフェッショナル部門 入賞

無料ビデオカウンセリング実施中です。

コメント

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