動作環境の設定
Python製WebRTC実装・aiortcを使用します。GitHubからaiortcを入手した後、VSCodeを使用してフォルダを開きます。
git clone https://github.com/aiortc/aiortc.git
cd aiortc
code .
VSCodeのRemote-Containersプラグインを利用して、下記のファイルを追加・修正し、UbuntuのDockerコンテナとして立ち上げます。
WebRTCで受信
インストールが正常に完了しているかを確認するためにまずはサンプルコードを実行します。
cd examples/apprtc
python3 apprtc.py
すると下記のようなログが出力されます。1行目のURL部分をコピペしてブラウザで開きます。
OpenCVで画像処理
OpenCVを利用して画像処理を行います。以下のようなコードは親の顔より見たというCV系研究者・開発者の方は多いのではないでしょうか。
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
img = cv2.Canny(frame, 100, 200) # 何か画像処理
cv2.imshow('frame', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
このような cv2.VideoCapture
や cv2.imshow
を利用したローカルで動作するGUIアプリと比べて、Webベースのアプリには以下のようなメリットがあります。
- 共有・実行が簡単
- スマホからでも試せる
- 操作・データ入力が簡単
以上でPython, OpenCV, WebRTCを用いたリアルタイム映像処理開発の基本的な流れを紹介しました。これらの技術を組み合わせることで、リアルタイムで映像処理を行うWebアプリケーションを開発することが可能です。