동영상에 얼굴이 나타나는 프레임 수를 감지해야합니다. MathWorks 사이트 (http://www.mathworks.in/help/vision/examples/face-detection-and-tracking-using-camshift.html)에 제공된 CAMShift 알고리즘을 사용하여 샘플 코드를 조사했습니다. 얼굴이 특정 프레임에 등장했는지 여부를 알 수있는 방법이 있습니까?동영상에 얼굴이 나타나는 프레임 감지하기
저는 MatLab을 처음 사용합니다. 나는 얼굴이 탐지되지 않으면 step 함수가 false 값을 리턴한다고 가정한다. (조건은 실패하고 C와 유사하다.) 가능한 해결책이 있습니까? MinSize를 사용하는 것도 가능한 해결책이라고 생각합니다.
나는 계산상의 부담을 걱정하지 않는다. 현재 코드는 다음과 같습니다.
clc;
clear all;
videoFileReader = vision.VideoFileReader('Teapot.mp4', 'VideoOutputDataType', 'uint8', 'ImageColorSpace', 'Intensity');
video = VideoReader('Teapot.mp4');
numOfFrames = video.NumberOfFrames;
faceDetector = vision.CascadeObjectDetector();
opFolder = fullfile(cd, 'Face Detected Frames');
frameCount = 0;
shotCount = 0;
while ~isDone(videoFileReader)
videoFrame = step(videoFileReader);
bbox = step(faceDetector, videoFrame);
framCount = frameCount + 1;
for i = 1:size(bbox,1)
shotCount = shotCount + 1;
rectangle('Position',bbox(i,:),'LineWidth', 2, 'EdgeColor', [1 1 0]);
videoOut = insertObjectAnnotation(videoFrame,'rectangle',bbox,'Face');
progIndication = sprintf('Face has been detected in frame %d of %d frames', shotCount, numOfFrames);
figure, imshow(videoOut), title(progIndication);
end
end
release(videoFileReader);
이와 같은 경우에는 아무것도 발견되지 않으면'bbox'가 빈 반환을 기대합니다. (당신이 알고있는 이미지에 그것에 얼굴이 없는지보십시오!). – nkjt
그것이 작동하는 방법이라고 생각하지 않습니다. 캐스케이드 오브젝트는 비디오에서 얼굴을 확실히 감지하고 시도합니다. 그것은 bbox의 가능한 가장 작은 크기를 반환 할 수 있습니다. 나는 얼굴이없는 비디오를 보았습니다. 그게 뭐하는 것 같아요 ... –
정말요? 방금 작업 영역에서 무작위로 선택한 이미지로 시도했기 때문에 공백이 반환됩니다. (당신의 프로그램에서 이것을 체크하기 위해서'isempty'를 사용할 수 있습니다). – nkjt