Linux下安装opencv with-ffmpeg解决无法读取视频的问题

本文详细介绍了如何编译安装FFmpeg并将其与OpenCV集成的过程,包括配置参数、解决常见错误及代码修改等内容,确保FFmpeg功能在OpenCV中正确启用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 编译安装ffmpeg

下载源码,执行 ./configure --disable-yasm --enbale-shared --prefix=/usr/local/ffmpeg 即可。

2. 下载opencv并设置config

下载源码,并 git checkout 3.1.0,也可以是其他版本

cmake -D WITH_CUDA=OFF \
            -D CMAKE_BUILD_TYPE=Release \
            -D CMAKE_INSTALL_PREFIX=/home/packages/opencv/install \
            -D WITH_IPP=OFF \
            -D WITH_FFMPEG=ON  \
            -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
            -D BUILD_TESTS=OFF \
            -D BUILD_PERF_TESTS=OFF \
            -D INSTALL_PYTHON_EXAMPLES=OFF \
            -D INSTALL_C_EXAMPLES=OFF \
            -D PYTHON_EXECUTABLE=$(which python) \
            -D BUILD_EXAMPLES=OFF ..

注意:

(1) 需要指定ffmpeg安装目录便于cmake找到, 否则会出现lib库找不到的问题,使得始终 FFMPEG:NO

https://blog.youkuaiyun.com/yangzhenzhen/article/details/62417021

export PKG_CONFIG_PATH=/home/packages/ffmpeg/lib/pkgconfig;$PKG_CONFIG_PATH

(2)设置ffmpeg的include路径到 bashrc文件中,并在ffmpeg/include目录下创建ffmpeg文件夹,将所有头文件拷到ffmpeg下,注意是拷贝文件不是文件夹。

(3)修改opencv中 modules/videoio/src/cap_ffmpeg_impl.hpp 代码,在最顶端添加宏定义

https://blog.youkuaiyun.com/guo_lei_lamant/article/details/81568346

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

否则会出现以下错误

error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope

error: ‘AVFMT_RAWPICTURE’ was not declared in this scope

error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope

for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o' failed
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o] Error 1

 

转载于:https://www.cnblogs.com/haiyang21/p/11029303.html

<think>好的,用户想在Linux系统上安装OpenCV C++库,我需要提供详细的步骤。首先,我得回忆一下自己之前安装OpenCV的经历,或者查一下最新的安装方法,因为步骤可能会有变化。 首先,安装依赖项是关键。Linux系统通常需要安装编译工具和库,比如cmake、g++,还有图像处理相关的依赖库,像libjpeg、libpng这些。用户可能不太清楚具体需要哪些依赖,所以得列出来,并给出安装命令,比如用apt-get安装。 然后,下载OpenCV代码。通常是从GitHub克隆仓库或者下载压缩包。可能需要指定版本,比如最新的4.9.0,但也要提醒用户如果需要其他版本可以更换。 接下来是编译和安装。使用cmake配置项目,然后make进行编译。这里需要注意编译选项,比如是否安装Python绑定,但用户只需要C++的话,可能可以关闭一些选项,比如BUILD_opencv_python。不过默认情况下可能没问题,但需要确认。 安装完成后,配置环境变量,比如pkg-config路径,这样编译器才能找到OpenCV的库文件。用户可能不太熟悉如何设置,所以要给出具体的命令,比如导出PKG_CONFIG_PATH。 验证安装部分,写一个简单的C++程序,比如读取图片并显示。这时候需要编译命令,使用g++并链接OpenCV库。这里要确保用户正确使用pkg-config来获取编译选项,避免找不到头文件或库的问题。 最后,常见问题处理,比如依赖缺失导致编译错误,或者权限问题需要用sudo。可能还需要提醒用户如果遇到问题,可以查阅OpenCV的官方文档或者社区支持。 检查整个流程是否有遗漏,比如是否需要创建构建目录,或者make install后的权限问题。确保每个步骤都清晰,用户能一步步跟着做。另外,要使用中文,避免专业术语过多,让新手也能理解。</think>在Linux系统中安装OpenCV C++开发环境可分为以下步骤,以Ubuntu/Debian系统为例: ### 一、安装依赖库 ```bash sudo apt update sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev ``` ### 二、下载代码 ```bash mkdir ~/opencv_build && cd ~/opencv_build git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git ``` ### 三、编译安装 ```bash cd opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D WITH_TBB=ON \ -D WITH_FFMPEG=ON .. make -j$(nproc) sudo make install ``` ### 四、环境配置 ```bash sudo ldconfig echo '/usr/local/lib' | sudo tee -a /etc/ld.so.conf.d/opencv.conf ``` ### 五、验证安装 创建测试文件`test.cpp`: ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("test.jpg"); if(image.empty()) return -1; imshow("Display", image); waitKey(0); return 0; } ``` 编译命令: ```bash g++ test.cpp -o test `pkg-config --cflags --libs opencv4` ``` ### 常见问题处理 1. 若出现`fatal error: opencv2/opencv.hpp`,检查`/usr/local/include/`路径是否包含opencv4目录 2. 编译错误时尝试清理构建目录:`rm -rf build && mkdir build` 3. 视频支持问题需确认FFmpeg已正确安装 OpenCV官方建议使用CMake进行项目配置管理[^1],最新版本4.9.0已优化了ARM架构的支持[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值