OPENCV交叉无法使用FFMPEG保存视频主要原因是:opencv即使不使用ffmpeg也可以正常编译videoio模块,所以问题就在编译opencv时videoio模块没有找到ffmpeg,如下图:
解决方法:
1、编写 toolchain.cmake,其中ffmpeg已经安装至/opt/sysroot/usr,并且/opt/sysroot/usr/lib/pkgconfig存在ffmpeg相关pc文件。
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR aarch64 )
set( CMAKE_C_COMPILER aarch64-linux-gnu-gcc )
set( CMAKE_CXX_COMPILER aarch64-linux-gnu-g++ )
set( CMAKE_FIND_ROOT_PATH "/opt/sysroot/usr")
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
2、安装:pkg-config
apt-get install pkg-config
3、添加PKG_CONFIG_PATH环境变量
export PKG_CONFIG_PATH=/opt/sysroot/usr/lib/pkgconfig
echo $PKG_CONFIG_PATH //查看有没设置生效
4、执行cmake-gui,选择 toolchain.cmake交叉编译文件编译,并勾选编译选项
5、cmake-gui通过Add Entry按钮添加 OPENCV_ENABLE_PKG_CONFIG,选bool类型,打勾。
6、再点击Configure,可以看到ffmpeg被找到:
7、然后在点击generate ==> make ==> make install;完成编译。