親愛なるコミュニティ、
ビデオは評価するための「測定データ」としてますます重要になっているので、
プロセスのビデオを他のスカラー(時系列)データと組み合わせるアプリケーションを考えています。
たとえば、右半分でビデオを再生し、左半分で他の時系列データを表示するJMPウィンドウ、
縦線で示します。タイムスケールでは、ビデオはプロセスまたは測定データに対応する画像を示しています。
時系列データを表示するには、JMPが正しい選択ですが、ビデオの再生についてはどうでしょうか。
JMPで動画を再生することはできますか?
ビデオデータ(mp4、mpeg、...ファイルなど)の読み取り/分析は可能ですか?
このようなタスクの経験、提案はありますか?
前もって感謝します!
PS:win10でJMP16.1(Pro)を使用
JMPは、外部ソフトウェアなしでJPGおよびPNGファイルを処理します。 それらをRGBマトリックスに変換して、独自の処理を行うことができます。
フレームごとにビデオをロードするには、OpenCVとPythonを使用できます。
OpenCVを使用して顔を見つけるJMPのPythonインターフェース。
使用しましたpython -m pip install opencv-pythonインストールします。
pySetup =
"\[
# https://www.c-sharpcorner.com/article/detecting-faces-from-image-and-video-using-python/
# https://stackoverflow.com/questions/66942582/error-215assertion-failed-empty-in-function-cvcascadeclassifierdetec
# https://www.nps.gov/media/video/view.htm?id=C8B260AC-1DD8-B71B-0B793ECB496E64E5
import cv2
# Load the cascade
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# To capture video from webcam.
#cap = cv2.VideoCapture(0)
cap = cv2.VideoCapture(file)
strcap = str(cap)
#print(cap,flush=True)
]\";
pyFinish = "\[
# Release the VideoCapture object
cap.release()
]\";
pyGet =
"\[
# Read the frame
_, img = cap.read()
#print(img,flush=True)
# Convert to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detect the faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Draw the rectangle around each face
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# Display
#cv2.imshow('Video', img)
#print(type(img),img.shape)
red = img[:,:,2]
green = img[:,:,1]
blue = img[:,:,0]
]\";
Python Init();
file = "https://www.nps.gov/nps-audiovideo/legacy/nature/C8B260AC-1DD8-B71B-0B793ECB496E64E5/nri-EOIntro3_240x134.mp4";
Python Execute( {file}, {strcap}, pySetup );
Show( strcap );
New Window( "x", bb = Border Box( Text Box( "" ) ), f=textbox() );
Wait( 1 );
frame=0;
While( 1,
x = Log Capture( rc = Python Execute( {}, {red, green, blue, faces}, pyGet ) );
If( Trim( x ) != "", Show( x ) );
If( rc == -1, Break() ); // -1 is python fail on eof
img = New Image( "rgb", {red / 255, green / 255, blue / 255} );
(bb << child) << delete;
bb << append( img );
frame += 1;
f<<SETTEXT></SETTEXT>
リンクから例を借りて、JMPが一度に画像を駆動できるように変更しました。 この低解像度のビデオでは非常に高速ですが、おそらくカメラにまっすぐ向いていないため、ほとんどの顔が認識されなくなります。 OpenCVには、便利なアルゴリズムがたくさんあります。 作ったこれモーション検出のためのずっと前のビデオ。
私はウェブカメラを試しませんでしたが、うまくいくはずだと信じています。
どうもありがとう、これはうまくいくと思います。詳細にテストするのに少し時間が必要です。