Cara Comunità,
poiché i video stanno diventando sempre più importanti come "dati di misurazione" da valutare,
Sto pensando a un'applicazione che combina un video di un processo con altri dati scalari (serie temporali).
Ad esempio, una finestra JMP che riproduce un video nella metà destra e mostra altri dati di serie temporali nella metà sinistra,
indicando con una linea verticale, dove sulla scala temporale il video mostra l'immagine corrispondente ad alcuni dati di processo o di misura.
Per visualizzare i dati delle serie temporali, JMP è la scelta giusta, ma che dire della riproduzione di video?
È possibile riprodurre un video in JMP?
È possibile leggere/analizzare dati video (es. mp4, mpeg, ... file)?
Qualche esperienza con compiti come questo, qualche suggerimento?
Grazie in anticipo!
PS: utilizzando JMP16.1(Pro) su win10
JMP gestisce file JPG e PNG senza alcun software esterno. Puoi trasformarli in matrici RGB ed eseguire le tue elaborazioni.
Per caricare un video, fotogramma per fotogramma, puoi usare OpenCV e Python, qualcosa del genere
JMP's Python interface using OpenCV to find a face.Interfaccia Python di JMP che utilizza OpenCV per trovare un volto.
ero solito python -m pip install opencv-python installare.
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>
Ho preso in prestito l'esempio dal collegamento e l'ho modificato in modo che JMP potesse guidarlo un'immagine alla volta. È molto veloce su questo video a bassa risoluzione, ma la maggior parte dei volti non viene riconosciuta, probabilmente perché non sono rivolti direttamente verso la fotocamera. OpenCV ha molti algoritmi che troverai utili. ho costruito questo video molto tempo fa per il rilevamento del movimento.
Non ho provato la webcam, ma credo che dovrebbe funzionare.
Grazie mille, penso che funzionerà, ho bisogno di un po' di tempo per testare in dettaglio.