Ubuntu 16.04中OpenCV 2.3处理视频

背景

由于项目需要用OpenCV2.3的视频处理功能,
代码如下:

#include 
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(){
    cv::VideoCapture movie;
    string path="/your/movie/path/test.avi";
    movie.open(path);
    cout<

发现视频总是打不开。查找网上资料后发现是ffmpeg没有安装。

查看opencv-2.3.0/3rdparty/CMakeLists.txt源码知道Linux版的OpenCV中3rdparty默认没有加入ffmpeg。

# opencv-2.3.0/3rdparty/CMakeLists.txt文件内容
if(NOT ZLIB_FOUND)
    add_subdirectory(zlib)
endif()
if(WITH_JASPER AND NOT JASPER_FOUND)
    add_subdirectory(libjasper)
endif()
if(WITH_JPEG AND NOT JPEG_FOUND)
    add_subdirectory(libjpeg)
endif()
if(WITH_PNG AND NOT PNG_FOUND)
    add_subdirectory(libpng)
endif()
if(WITH_TIFF AND NOT TIFF_FOUND)
    add_subdirectory(libtiff)
endif()
if(WIN32)
    add_subdirectory(ffmpeg)
endif()
# 可以看到只有WIN32位系统才会包含ffmpeg

解决方案

安装ffmpeg
OpenCV 2.3版本对应的ffmpeg为0.7,从Github上克隆分支为0.7的代码,然后进行编译。测试通过后再重新编译OpenCV 2.3,同时打开WITH_FFMPEG选项。
OpenCV 2.3引入到CMake工程中见这篇。

你可能感兴趣的:(Ubuntu 16.04中OpenCV 2.3处理视频)