Создайте системные объекты для чтения и отображения видео и для рисования ограничивающего прямоугольника объекта.
videoReader = VideoReader('visionface.avi'); videoPlayer = vision.VideoPlayer('Position',[100,100,680,520]);
Прочтите первый видеокадр, который содержит объект, определите область.
objectFrame = readFrame(videoReader); objectRegion = [264,122,93,93];
В качестве альтернативы можно использовать следующие команды для выбора области объекта с помощью мыши. Объект должен занимать большинство области:
рисунок; imshow (objectFrame);
objectRegion = round (getPosition (imrect))
Показать начальную систему координат с красным ограничивающим прямоугольником.
objectImage = insertShape(objectFrame,'Rectangle',objectRegion,'Color','red'); figure; imshow(objectImage); title('Red box shows object region');
Обнаружение процентных точек в области объекта.
points = detectMinEigenFeatures(im2gray(objectFrame),'ROI',objectRegion);
Отображение обнаруженных точек.
pointImage = insertMarker(objectFrame,points.Location,'+','Color','white'); figure; imshow(pointImage); title('Detected interest points');
Создайте объект трекера.
tracker = vision.PointTracker('MaxBidirectionalError',1);
Инициализируйте трекер.
initialize(tracker,points.Location,objectFrame);
Чтение, отслеживание, отображение точек и результатов в каждом видеокадре.
while hasFrame(videoReader) frame = readFrame(videoReader); [points,validity] = tracker(frame); out = insertMarker(frame,points(validity, :),'+'); videoPlayer(out); end
Отпустите видеоплеер.
release(videoPlayer);