www.gusucode.com > IPCV_Eval_Kit_R2019a_0ce6858工具箱matlab程序源码 > IPCV_Eval_Kit_R2019a_0ce6858/code/demo_files/I4_08_5_tracking_CAMShift.m
%% 弶婜壔 clear;clc;close all;imtool close all %% Step 1: 僩儔僢僉儞僌偡傞婄傪愭偢専弌 % 婄擣幆梡僆僽僕僃僋僩偺嶌惉 faceDetector = vision.CascadeObjectDetector(); % 1僼儗乕儉撉崬傒丄婄専弌傪幚峴 videoFileReader = vision.VideoFileReader('visionface.avi'); videoFrame = step(videoFileReader); bbox = step(faceDetector, videoFrame); % 専弌偟偨婄偺廃傝偵巐妏傪昤夋偟丄夋憸傪昞帵 videoOut = insertObjectAnnotation(videoFrame,'rectangle',bbox,'Face'); figure, imshow(videoOut), title('Detected face'); %% Step 2: Identify Facial Features To Track % Get the skin tone information by extracting the Hue from the video frame % converted to the HSV color space. % Hue僠儍僱儖偱昞帵偟丄婄偺廃傝偵巐妏傪昤夋 % 敡怓傪僩儔僢僉儞僌偡傞摿挜偲偟偰梡偄傞丅(婄偑堏摦偟偨傝孹偄偰傕曄傢傜側偄摿挜検) [hueChannel,~,~] = rgb2hsv(videoFrame); % HSV嬻娫傊曄姺 figure, imshow(hueChannel), title('Hue channel data'); rectangle('Position',bbox(1,:),'LineWidth',2,'EdgeColor',[1 1 0]) %% STEP3 : 婄傪僩儔僢僉儞僌 % 旲偺椞堟偺Hue僸僗僩僌儔儉偱僩儔僢僉儞僌(攚宨偑娷傑傟側偄偨傔) noseDetector = vision.CascadeObjectDetector('Nose'); faceImage = imcrop(videoFrame,bbox(1,:)); noseBBox = step(noseDetector,faceImage); % The nose bounding box is defined relative to the cropped face image. % Adjust the nose bounding box so that it is relative to the original video % frame. noseBBox(1,1:2) = noseBBox(1,1:2) + bbox(1,1:2); % Create a tracker object. tracker = vision.HistogramBasedTracker; % tracker傪丄旲椞堟偺僺僋僙儖偺Hue偱弶婜壔 initializeObject(tracker, hueChannel, noseBBox(1,:)); % Create a video player object for displaying video frames. videoInfo = info(videoFileReader); videoPlayer = vision.VideoPlayer('Position',[300 300 videoInfo.VideoSize+30]); % Track the face over successive video frames until the video is finished. while ~isDone(videoFileReader) % 侾僼儗乕儉撉崬傒 videoFrame = step(videoFileReader); % 擖椡RGB傪丄HSV傊曄姺 [hueChannel,~,~] = rgb2hsv(videoFrame); % 慜僼儗乕儉偺旲晹暘偺Hue僸僗僩僌儔儉傪梡偄丄僩儔僢僉儞僌 bbox = step(tracker, hueChannel); % Insert a bounding box around the object being tracked videoOut = insertObjectAnnotation(videoFrame,'rectangle',bbox,'Face'); % Display the annotated video frame using the video player object step(videoPlayer, videoOut); end % Release resources release(videoFileReader); release(videoPlayer); % Copyright 2014 The MathWorks, Inc.