今天用C++opencv读取视频发现一个问题  可以读取图片 无法读取视频 或者 视频流 百度下原因是opencv编译的时候没有把ffmpeg加进去  平时用的都是python 没有这个问题

一般情况下 opencv编译没有加ffmpeg  这样会导致无法读取视频 或者 视频流  cap.isOpen() 一直是false

重新编译Opencv

1.安装ffmpeg   百度参考方法    终端中输入ffmpeg  会跳出一大堆信息  包括版本什么的  说明安装成功

2.重新编译opencv

1.官网下载源码

2.

cd opencv    #进入opencv根目录
mkdir build    #创建编译输出目录
cd build    #进入build 目录
#编译(注意cmake最后需要写两个点)
sudo cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON ..
sudo make
sudo make install

再试下代码 例如

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;

int main() {

    VideoCapture cap;
    cap.open("Running.flv");
    if (!cap.isOpened()) return -1;
    namedWindow("camera", 1);
    Mat frame;
    while (true) {
        cap >> frame;
        imshow("frame", frame);
        if (waitKey(2) > 0) break;
        destroyAllWindows();
        cap.release();
    }

    return 0;
}

上面的Cmake不一定有用  可能还需要删除旧版本OpenCVConfig.cmake   等一些文件

sudo find / -iname OpenCVConfig.cmake

找到然后删除

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐