www.gusucode.com > vision 源码程序 matlab案例代码 > vision/HistogramTrackAFaceExample.m
%% Track a Face % Track and display a face in each frame of an input video. %% % Create System objects for reading and displaying video and for drawing a % bounding box of the object. videoFileReader = vision.VideoFileReader('vipcolorsegmentation.avi'); videoPlayer = vision.VideoPlayer(); shapeInserter = vision.ShapeInserter('BorderColor','Custom', ... 'CustomBorderColor',[1 0 0]); %% % Read the first video frame, which contains the object. Convert the image % to HSV color space. Then define and display the object region. objectFrame = step(videoFileReader); objectHSV = rgb2hsv(objectFrame); objectRegion = [40, 45, 25, 25]; objectImage = step(shapeInserter, objectFrame, objectRegion); figure imshow(objectImage) title('Red box shows object region') %% % (Optionally, you can select the object region using your mouse. The % object must occupy the majority of the region. Use the following % command.) % figure; imshow(objectFrame); objectRegion=round(getPosition(imrect)) %% % Set the object, based on the hue channel of the first video frame. tracker = vision.HistogramBasedTracker; initializeObject(tracker, objectHSV(:,:,1) , objectRegion); %% % Track and display the object in each video frame. The while loop reads % each image frame, converts the image to HSV color space, then tracks the % object in the hue channel where it is distinct from the background. % Finally, the example draws a box around the object and displays the % results. while ~isDone(videoFileReader) frame = step(videoFileReader); hsv = rgb2hsv(frame); bbox = step(tracker, hsv(:,:,1)); out = step(shapeInserter, frame, bbox); step(videoPlayer, out); end %% % Release the video reader and player. release(videoPlayer); release(videoFileReader);