编译opencv-4.8.1+ffmpeg的一些问题和解决方法
发布于 2025年03月04日 14:17
更新于 2025年05月21日 10:56
1、此版opencv貌似存在图片处理上的bug,在arm类的CPU上编译时会在photo上报错,所以得加上 -DBUILD_opencv_xphoto=OFF -DBUILD_opencv_optflow=OFF -DBUILD_opencv_rgbd=OFF 参数,把xphoto屏蔽掉。
2、在arm类的cpu上的linux 编译是不会下载ffmpeg库,即使添加了--DWITH_FFMPEG=ON 也一样,得使用系统APT或YUM下载的 ffmpeg 和相关库并安装才能找到并编译,但如果是有裁剪和嵌入的FFMPEG的需要,就需要自行编译FFMPEG.
3、编译FFMPEG不能使用静态库,并且需要把avresample 加入ffmpeg的编译,否则在编译OPENCV时,会提示找不到avresample 的引用而导致编译报错
4、需要加入-DOPENCV_EXTRA_MODULES_PATH 扩展库,否则在编译OPENCV时会报缺少引用而编译失败
5、怀疑是因为旧版本的编译器的关系,例如是在SS928(即海思3403)的交叉编译器上编译,在编译测试程序时会报错。需要加入-DBUILD_TESTS=OFF 强制不编译OPENCV的测试程序
最后,以下是我在SS928(即海思3403)编译环境上使用的完整OPENCV和FFMPEG的预编译命令:
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_opencv_world=ON -DCMAKE_INSTALL_PREFIX=./install -DBUILD_opencv_xphoto=OFF -DBUILD_opencv_optflow=OFF -DBUILD_opencv_rgbd=OFF -DWITH_FFMPEG=ON -DOPENCV_EXTRA_MODULES_PATH=../../modules -DBUILD_TESTS=OFF ..
./configure --enable-gpl --enable-libx264 --prefix=./install --enable-pic --enable-avresample --enable-shared --disable-static