OpenCV使用cv::VideoCapture无法读取视频 isOpened()总返回false

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    cv::Mat frame;
    std::string videoPath = "/home/z/Number.mp4"; // 修改为你的视频文件路径

    // 打开视频文件
    cv::VideoCapture cap(videoPath);

    // 检查是否成功打开
    if (!cap.isOpened()) {
        std::cerr << "ERROR! Unable to open video file\n";
        return -1;
    }

    // 读取和显示视频帧
    while (true) {
        cap >> frame;

        if (frame.empty()) {
            std::cerr << "ERROR! Blank frame grabbed\n";
            break;
        }

        cv::imshow("Video Playback", frame);

        if (cv::waitKey(30) >= 0) {
            break;
        }
    }

    return 0;
}

videoPath换过视频文件地址、也更换过rtsp流地址,但是总报错,卡在cap.isOpened()退出。

常见可能会造成cv::VideoCapture open失败的原因,可能是视频文件不存在或者RTSP流异常导致了,我已经排除了此问题。

FFmpeg版本使用的4.4.5, 最初使用的6版本的,怀疑版本过高切换成4.4.5版本了,使用的是自己编译的。

在编译OpenCV的时候 执行

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/opencv-4.5.0 ..

发现FFMPEG未启用

— Video I/O:
— DC1394: NO
— FFMPEG: NO
— avcodec: NO
— avformat: NO
— avutil: NO
— swscale: NO
— avresample: NO
— GStreamer: NO
— v4l/v4l2: YES (linux/videodev2.h)

图片[1]-OpenCV使用cv::VideoCapture无法读取视频 isOpened()总返回false-天煜博客

使用APT安装FFmpeg可以快速解决

# 安装FFmpeg相关的库
sudo apt-get update
sudo apt-get install ffmpeg
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev

安装FFmpeg相关的库之后的cmake输出有了一些变化:

— Video I/O:

— DC1394: NO

— FFMPEG: YES

— avcodec: YES (58.134.100)

— avformat: YES (58.76.100)

— avutil: YES (56.70.100)

— swscale: YES (5.9.100)

— avresample: NO

— GStreamer: NO

— v4l/v4l2: YES (linux/videodev2.h)

图片[2]-OpenCV使用cv::VideoCapture无法读取视频 isOpened()总返回false-天煜博客
# 重新执行
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/opencv-4.5.0 ..
make -j32
make install

# 重新编译程序就能正常播放了

自己编译的FFmpeg如何解决该问题?

经排查是由于我没找到编译安装的FFmpeg,

# 指定一下自己编译ffmpeg的pkg_config路径
export PKG_CONFIG_PATH=/usr/local/ffmpeg-4.4.5/lib/pkgconfig:$PKG_CONFIG_PATH
# 再次编译opencv
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/opencv-4.5.0 ..
make -j32
make install
# cmake的时候可以看到已经识别到了
# 重启启动程序 问题解决
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容