監視カメラの映像からPythonパッケージのMediaPipeのPoseを使って骨格推定をしたいと考えています。
まずは、監視カメラの動画ストリーミングをRTSPでPythonに取り込み表示する方法をご紹介します。
使用環境はWin11です。
Python 3.10のインストール
現時点(2025年1月)では新しいPythonのバージョンではMediaPipeが動かないのでPython3.10環境を作ります。
下記のURLからPython3.10をダウンロードします。
https://www.python.org/downloads/windows/
Windows用のインストーラーをDownloadするのがよいです。
VS Build Tools
VS BuildingToolsのインストール
https://visualstudio.microsoft.com/ja/vs/community/
VS Studio Communityをインストール。
その際に、C関係の機能をインストールします。
これで、python関連のライブラリがインストールできます。
venvを使ってPython 3.10環境の構築
仮想環境を有効化
venv\Scripts\activate
pipをアップグレード
python.exe -m pip install –upgrade pip
ライブラリをインストール
pip install opencv-python mediapipe numpy matplotlib
これで準備完了です。
RTSPをPythonで表示
import cv2
# RTSPストリームのURL
rtsp://username:password@ip_address:port/stream
# RTSPストリームのキャプチャ
cap = cv2.VideoCapture(rtsp_url)
if not cap.isOpened():
print("Error: Could not open RTSP stream.")
exit()
while True:
ret, frame = cap.read()
if not ret:
print("Error: Failed to read frame from RTSP stream.")
break
cv2.imshow('RTSP Stream', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
これを実行することで、
このようにPythonでTP-LinkのVIGI C540SのRTSP映像を表示することができました。
あとは、Python側でMediapipeの骨格推定をつかうことで、やりたいことができるようになります。
続きはこちら