主要内容

基于光流的实时运动检测

这个例子展示了如何使用光流技术创建一个视频算法来检测运动。本示例使用图像采集工具箱™系统对象™以及计算机视觉工具箱™系统对象。

简介

此示例将来自图像采集设备的图像流化,以检测实时视频中的运动。该算法利用光流估计技术估计视频序列中每一帧的运动向量。一旦确定了运动向量,我们就把它画在视频序列中移动的物体上。

初始化

创建Video Device System对象。

vidDevice = imaq。VideoDevice (“winvideo”, 1“YUY2_320x240”...“ReturnedColorSpace”“rgb”...“DeviceProperties。亮度的, 130,...“DeviceProperties。锐度的, 50);

创建一个System对象来估计物体运动的方向和速度从一个视频帧到另一个使用光流。

opticFlow = opticalFlowHS;

流采集和处理循环

创建一个处理循环在输入视频中执行运动检测。这个循环使用上面实例化的System对象。

%设置为流nFrames = 0;(nFrames < 100)前100帧的进程。从成像设备获取单帧。frameRGB = vidDevice ();计算特定帧的光流。流= estimateFlow (opticFlow rgb2gray (frameRGB));imshow (frameRGB)情节(流,“DecimationFactor”, 5 [5],“ScaleFactor”, 25)增加帧数nFrames = nFrames + 1;结束

总结

在图窗口中,您可以看到示例检测到黑色文件的运动。移动的物体用图中所示的矢量场线表示。

释放

在这里,您调用System对象上的release方法来关闭所有打开的文件和设备。

释放(vidDevice);
Baidu
map