脸部检测和追踪,脸部检测采用2013CVPR中DRMF算法,追踪采用KLT
function [outfilename,fr] = DRMF_KLT(infilename)
addpath(genpath('.'));
infilename='lxn.avi'
vidFile = fullfile(infilename);
% first step 检测人脸
% Create a cascade detector object.
faceDetector = vision.CascadeObjectDetector();
noseDetector = vision.CascadeObjectDetector('Nose'); %%%%
outfilename = [infilename(1:end-4),'_DRMF_KLT.avi']; %%%% lxn_DRMF_KLT.avi
outName = fullfile('.\result',outfilename); %%%% .\result\lxn_DRMF_KLT.avi
vid = VideoReader(vidFile); %%%%
fr = round(vid.FrameRate); %%%% get fps
% Read a video frame and run the detector.
videoFileReader = vision.VideoFileReader(vidFile);
% 针对lxn视频 videoFrame = 480*640*3
videoFrame = step(videoFileReader);
if 0
twoface='twoface3.jpg';
videoFrame=imread(twoface);
end
% 针对lxn视频 bbox = 141 116 305 305
if 0
bbox = step(faceDetector, videoFrame);
else
% 图片中有一张脸,rebbox是1*4;两个脸的话,rebbox就是 2*4,以此类推
rebbox = step(faceDetector, videoFrame);
rebbox_nose = step(noseDetector, videoFrame);
[bx by] = size(rebbox);
[bxn byn] = size(rebbox_nose);
if(bx >= 1)
%人脸有两个,选取框大的。