
けんろう
PySimpleGUIでは、OpenCVを使って、
PCのカメラで撮影した映像を表示するアプリも自作できます。
公式クックブックにデモが載っています。
この記事では、公式クックブックに載っている、OpenCVを使って、PCカメラで撮影した映像を表示するアプリを作る方法を紹介します。
この記事に載っているサンプルコードをコピーして、Pythonで実行すれば、簡単に動きを確認できますので、是非試してみて下さい。
この記事では、初心者にもわかりやすいように、各処理の内容を、サンプルコード内にコメントとして載せています。
人工知能技術専門プログラミングスクール「AIジョブカレ」の無料説明会参加、講座申込み
今回作成するアプリ
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でGUIアプリ入門】PySimpleGUI、Pyperclip を使った クリップボードアプリ の作り方
- 【PythonでGUIアプリ入門】PySimpleGUI を使った タイマーストップアプリ の作り方
- 【Python(PySimpleGUI)でGUIアプリ入門】Pythonアプリを起動するランチャソフトの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIによるPCカメラ映像を使った映像加工アプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIで、PCカメラで撮影した映像を表示するアプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIを使った、メディアプレイヤーアプリの作り方
リンク
コメント