В этом примере показано, как создать видео алгоритм, чтобы обнаружить движение с помощью метода оптического потока. Этот пример использует Системный объект Image Acquisition Toolbox™ наряду с Системными объектами Computer Vision Toolbox™.
Этот пример потоки отображает от устройства получения изображений, чтобы обнаружить движение в живом видео. Это использует метод оценки оптического потока, чтобы оценить векторы движения в каждой системе координат живой видео последовательности. Если векторы движения определяются, мы чертим его по движущимся объектам в видео последовательности.
Создайте Системный объект Видеоустройства.
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_320x240', ... 'ReturnedColorSpace', 'rgb', ... 'DeviceProperties.Brightness', 130, ... 'DeviceProperties.Sharpness', 50);
Создайте Системный объект, чтобы оценить направление и скорость объектного движения от одного видеокадра до другого оптического потока использования.
opticFlow = opticalFlowHS;
Создайте цикл обработки, чтобы выполнить обнаружение движения во входном видео. Этот цикл использует Системные объекты, которых вы инстанцировали выше.
% Set up for stream nFrames = 0; while (nFrames<100) % Process for the first 100 frames. % Acquire single frame from imaging device. frameRGB = vidDevice(); % Compute the optical flow for that particular frame. flow = estimateFlow(opticFlow,rgb2gray(frameRGB)); imshow(frameRGB) hold on plot(flow,'DecimationFactor',[5 5],'ScaleFactor',25) hold off % Increment frame count nFrames = nFrames + 1; end
В окне рисунка вы видите, что пример обнаружил движение черного файла. Движущиеся объекты представлены с помощью векторных полевых линий, как замечено в изображении.
Здесь вы вызываете метод release для системных объектов, чтобы закрыть все открытые файлы и устройства.
release(vidDevice);