Этот пример показывает, как создать видео алгоритм для обнаружения движения с помощью оптического метода оптического потока. В этом примере используется системный объект Image Acquisition Toolbox™ наряду с объектами Computer Vision Toolbox™ System.
Этот пример транслирует изображения с устройства сбора изображений, чтобы обнаружить движение в живом видео. Он использует метод оптической оценки оптического потока, чтобы оценить векторы движения в каждой системе координат живой видеопоследовательности. Как только векторы движения определены, мы нарисуем его над движущимися объектами в видеопоследовательности.
Создайте объект Video Device System.
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);