친애하는 커뮤니티,
동영상이 평가하는 "측정 데이터"로서 점점 더 중요해지면서,
프로세스의 비디오를 다른 스칼라(시계열) 데이터와 결합하는 응용 프로그램을 생각하고 있습니다.
예를 들어 오른쪽 절반에 비디오를 재생하고 왼쪽 절반에 다른 시계열 데이터를 표시하는 JMP 창,
시간 척도에서 비디오는 일부 프로세스 또는 측정 데이터에 해당하는 그림을 보여 주는 수직선으로 표시합니다.
시계열 데이터를 표시하려면 JMP가 올바른 선택이지만 비디오 재생은 어떻습니까?
JMP에서 비디오를 재생할 수 있습니까?
모든 비디오 데이터(예: mp4, mpeg, ... 파일)를 읽고 분석할 수 있습니까?
이와 같은 작업에 대한 경험이 있습니까? 제안 사항이 있습니까?
미리 감사드립니다!
추신: 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에는 유용한 알고리즘이 많이 있습니다. 내가 지었다 이것 모션 감지를 위해 오래 전 비디오.
나는 웹캠을 시도하지 않았지만 그것이 작동해야 한다고 믿습니다.
감사합니다. 이 방법이 효과가 있을 것 같습니다. 자세히 테스트하려면 시간이 필요합니다.