视频序列处理与视觉运动跟踪
1. 视频编解码器获取
在处理视频时,我们可以通过特定方法获取视频的编解码器信息。以下代码展示了如何获取视频的编解码器:
char codec[4];
processor.getCodec(codec);
std::cout << "Codec: " << codec[0] << codec[1]
<< codec[2] << codec[3] << std::endl;
运行上述代码,可能会得到类似 Codec : XVID
的输出。当写入视频文件时,需要在 cv::VideoWriter
类的 open
方法中指定编解码器,可使用与输入视频相同的编解码器(这是 setOutput
方法的默认选项),也可以传入 -1
,此时会弹出一个窗口,让你从可用编解码器列表中选择一个,所选编解码器的代码会自动发送给 open
方法。
2. 视频前景对象提取
2.1 前景提取原理
当固定相机观察场景时,背景大多保持不变,我们的目标是提取场景中的移动前景对象。若有不含前景对象的背景图像,可通过简单的图像差分提取当前帧的前景:
// compute difference between