Ubuntu使用dense_flow提取视频图像的光流图像

Posted Fight boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu使用dense_flow提取视频图像的光流图像相关的知识,希望对你有一定的参考价值。

使用dense_flow求取图像的光流图像,原项目地址: https://github.com/wanglimin/dense_flow

该方法使用的是opecnv最基本的光流图像计算方法,输出为 flow_x 和flow_y 两个图像。

因为输入同程序要求不同(视频 -> 连续帧图像),因此对程序进行部分修改,大体相同。

对该程序的编译方法为:

假设程序的目录为:$ROOT_DENSE

在对该程序进行编译之前应该首先在CMakelist里面修改要进行编译的源文件。

将第5, 6行修改为:

add_executable( denseFlow denseFlow.cpp )
target_link_libraries( denseFlow ${OpenCV_LIBS} )

 接下来对程序进行编译:

cd $ROOT_DENSE
mkdir build
cd build
cmake ..
make

 注: 在使用该方法时,需要使用opecnv2.4.X版本,推荐使用2.4.10版本,如果已经安装opencv更高版本,如3.0,需要对其进行修改。

(因3.0中有bug,所以在处理图像数据过程中可能会出现问题),bug分析见:http://stackoverflow.com/questions/31996367/opencv-resize-fails-on-large-image-with-error-215-ssize-area-0-in-funct

当需要进行resize的图像长度大于2^31时,ssize.area()返回值为负值。因此需要注释掉下面语句:

  CV_Assert( ssize.area() > 0 ) 

 

对于图像的高度height 大于宽度width 的图像,需要对该语句进行注释:

 CV_Assert( dsize.area() > 0 ) 

 

如果在项目开发中需要使用不同版本的opencv,那么对不同版本opencv管理方法见:Ubuntu下多个版本OpenCV管理(Multiple Opencv version)

 

以上是关于Ubuntu使用dense_flow提取视频图像的光流图像的主要内容,如果未能解决你的问题,请参考以下文章

如何从视频中提取某一帧的图像

如何使用SnapMotion从视频中提取图像?

如何从视频中提取某一帧的图像

从视频中提取海报图像

从编码图像和视频中提取 DCT 系数

想要在 AVPlayer 中播放视频时逐帧提取视频中的所有图像