Chère communauté,
car les vidéos deviennent de plus en plus importantes en tant que "données de mesure" à évaluer,
Je pense à une application qui combine une vidéo d'un processus avec d'autres données scalaires (séries temporelles).
Par exemple, une fenêtre JMP qui lit une vidéo dans la moitié droite et affiche d'autres données de séries chronologiques dans la moitié gauche,
indiquant par une ligne verticale, où sur l'échelle de temps la vidéo montre l'image correspondant à certaines données de processus ou de mesure.
Pour afficher des données de séries chronologiques, JMP est le bon choix, mais qu'en est-il de la lecture de vidéos ?
Est-il possible de lire une vidéo dans JMP ?
Est-il possible de lire/analyser n'importe quelle donnée vidéo (par ex. fichiers mp4, mpeg, ...) ?
Une expérience avec des tâches comme celle-ci, une suggestion?
Merci d'avance!
PS : en utilisant JMP16.1(Pro) sur win10
JMP gère les fichiers JPG et PNG sans aucun logiciel externe. Vous pouvez les transformer en matrices RVB et faire votre propre traitement.
Pour charger une vidéo, image par image, vous pouvez utiliser OpenCV et Python, quelque chose comme ça
Interface Python de JMP utilisant OpenCV pour trouver un visage.
j'ai utilisé python -m pip installer opencv-python à installer.
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>
J'ai emprunté l'exemple du lien et l'ai modifié pour que JMP puisse le piloter une image à la fois. C'est très rapide sur cette vidéo basse résolution, mais la plupart des visages ne sont pas reconnus, probablement parce qu'ils ne font pas face à la caméra. OpenCV a beaucoup d'algorithmes que vous trouverez utiles. j'ai construit cette vidéo il y a longtemps pour la détection de mouvement.
Je n'ai pas essayé la webcam, mais je pense que cela devrait fonctionner.
Merci beaucoup, je pense que cela fonctionnera, j'ai besoin de temps pour tester en détail.
Génial! Si vous suivez la route Python + OpenCV, j'aimerais voir ce que vous avez fait.
(Je suis un peu gêné de ne pas avoir mieux géré l'exception de fin de fichier. Le rc==-1 détecte tout ce qui ne va pas, ce qui est suffisant quand tout va bien. Vous pourriez avoir besoin d'un essai... sauf dans le code pyGet pour faire la distinction entre l'exception EOF que vous attendez et d'autres exceptions (comme un manque de mémoire, ...) qui pourraient se produire.)
Quelqu'un d'autre, OpenCV est une bibliothèque de vision par ordinateur. La détection de visage n'est qu'une possibilité.