美文网首页SLAM、OpenCV、Linux、ROS等
Ubuntu 16.04中OpenCV 2.3处理视频

Ubuntu 16.04中OpenCV 2.3处理视频

作者: 一恪slam | 来源:发表于2018-12-15 11:37 被阅读0次

    背景

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

    #include <iostream>
    #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<<movie.isOpened()<<endl;
        if (!movie.isOpened()) {
            std::cerr << path << "video not found" << std::endl;
            return -1;
        }
        return 0;
    }
    

    发现视频总是打不开。查找网上资料后发现是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处理视频

        本文链接:https://www.haomeiwen.com/subject/mcoohqtx.html