参考网址:http://www.mathworks.com/help/vision/examples/face-detection-and-tracking-using-camshift.html
clear all;
clc;
faceDetector = vision.CascadeObjectDetector();
HOMEIMAGES_array=dir(fullfile('./video/','*.avi'));namelist = {};
nameindex = 0; i_index=0;
for i = 1:numel(HOMEIMAGES_array)
temp = HOMEIMAGES_array(i).name;
%for subject name
index_ = find(temp == '_');
name = temp(index_(3)+1:end);
ind = find(ismember(namelist,name));
if ~numel(ind)
nameindex = nameindex + 1;
namelist{nameindex} = name;
end
%for video frame
mov=mmread(['./video/',temp]);
mkdir(['./ytcelebrityface/',temp(1:size(temp,2)-4)]);
for m=1:mov.nrFramesTotal
if m<51
videoFrame=mov.frames(m).cdata;
% videoFrame = step(videoFileReader);
bbox = step(faceDetector, videoFrame);
% Draw the returned bounding box around the detected face.
% videoOut = insertObjectAnnotation(videoFrame,'rectangle',bbox,'Face');
if bbox
for ibox =1:size(bbox,1)
if size(bbox,1)>1
videoFace = imresize(imcrop(videoFrame,[bbox(ibox,:)]),[45,45]);
imwrite(videoFace,['./videoface/',temp(1:size(temp,2)-4),'/',num2str(m),'more',num2str(ibox),'.jpg'],'jpg');
else
videoFace = imresize(imcrop(videoFrame,[bbox]),[45,45]);
imwrite(videoFace,['./videoface/',temp(1:size(temp,2)-4),'/',num2str(m),'.jpg'],'jpg');
end
end
end
end
end
end
http://www.mathworks.com/help/vision/examples/face-detection-and-tracking-using-camshift.html