はじめに
PyVistaで作成した3Dオブジェクトに、ストリーミング配信からキャプチャした映像をテクスチャとしてマッピングするスクリプト(PyVistaを個人開発ウソ穴
に使えるかもと調査中)
概要
同じネットワーク内に、カメラ付きラズパイとWindows10の構成
ラズパイに接続したカメラの映像を3Dオブジェクトのテスクチャにします。
-
Windows10
- Python 3.9.2
- opencv-contrib-python 4.5.3.56
- pyvista 0.31.3
-
Raspberry PI 3 model B+
- MJPG-streamer
実行結果
後述するスクリプトの実行結果。円柱の3Dオブジェクトを作成し、ラズパイに接続したカメラの映像を3Dオブジェクトのテスクチャにしています。
↓ カメラの前に青い壁をたてている(銀色の箱の中はカメラ付きラズパイ)
スクリプト
test.py
import pyvista as pv
from pyvista import examples
import numpy as np
from matplotlib.cm import get_cmap
import cv2
targetImage = "http://{{ラズパイIPアドレス}}:8090/?action=stream"
cap = cv2.VideoCapture( targetImage )
numpy_image = np.array(targetImage)
surf = pv.Cylinder()
ret, frame = cap.read()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
tex = pv.numpy_to_texture(frame)
surf.plot(texture=tex)
補足
[ラズパイ]MJPEG-Streamerでストリーミングを実行するコマンド
(MJPEG-Streamerのインストールは ここ を参照)
$ /usr/local/bin/mjpg_streamer -i "input_raspicam.so -x 400 -y 400 -fps 15 -q 100" -o "output_http.so -p 8090 -w /usr/local/share/mjpg-streamer/www"
参考
参考にしたサイト
- Applying Textures