解决C++ openCV无法读取视频但是可以读取图像

C++代码中使用 cv::VideoCapture 读取视频文件时,视频文件路径正确,依然无法读取视频。
我的发现并解决过程(简易版):

1. 确保图片可以正常读取

路径正确!
有读取权限!
读取图像可以成功!

2. 检查 OpenCV 编译配置

确保 OpenCV 支持 MP4 格式的视频解码。你可以检查 OpenCV 编译时是否启用了 FFmpeg:
bash cv::getBuildInformation()
查看是否包含 FFmpeg,如果没有,你可能需要重新编译 OpenCV 支持 FFmpeg。

果然把上面的结果打印出来没看到的FFmpeg相关的内容,大概锁定原因。可能是无法读取 MP4 文件的关键原因。在 OpenCV 中,MP4 文件的读取通常依赖 FFmpeg 库来进行解码。

3. 解决方法1:重新编译 OpenCV,启用 FFmpeg

需要重新编译 OpenCV,并确保包含 FFmpeg 支持。编译步骤大致如下:

  • 下载 FFmpeg 源码并进行编译,生成静态或动态库。
  • 重新编译 OpenCV 时,确保启用了 FFmpeg 支持:
    cmake -D CMAKE_BUILD_TYPE=Release \
          -D CMAKE_TOOLCHAIN_FILE=<your_android_toolchain> \
          -D WITH_FFMPEG=ON \
          -D OPENCV_ENABLE_NONFREE=ON \
          -D BUILD_opencv_videoio=ON \
          -D BUILD_opencv_highgui=ON \
          <other_flags> \
          ..
    
    确保 W

你可能感兴趣的:(C&C++,图像处理,c++,opencv,音视频,openCV,图像处理)