整理记录下关于opencv4.5.5或4.7.0 及contrib源码交叉编译的步骤,命令。
源码拉取
opencv及contrib源码可以从github获取:
https://github.com/opencv/opencv.git
GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules
先拉取opencv,然后cd进入opencv根目录,再拉取opencv_contrib。
编译步骤
- 先修改opencv目录下的 platforms/linux/aarch64-gnu.toolchain.cmake文件,将交叉编译路径及命令名的前缀设定:
这里假定交叉编译工具链位于/home/buildroot/output/xxx/host/bin/ 目录。如果你是编译arm版本,这里就修改platforms/linux/arm-gnueabi.toolchain.cmake并添加arm架构对应的命令前缀。
- 编译
在opencv根目录下创建build目录。然后cd进入build。执行如下命令可以编译opencv for arm64:
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/opencv -DWITH_CUDA=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-gnu.toolchain.cmake -DCUDA_GENERATION=Kepler -DENABLE_PROFILING=OFF -DWITH_OPENCL=OFF -DBUILD_TESTS=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=OFF -DBUILD_opencv_js=OFF -DENABLE_NEON=ON -DENABLE_VFPV3=OFF
-DCMKAE_BUILD_TYPE=Release
如果需要打开或者关闭某些功能,可以往以上命令添加对应的ON/OFF语句。
以上命令执行成功后即可执行make && make install。 生成的bin和libs 将被install到以上命令中CMAKE_INSTALL_PREFIX宏指定的/opt/opencv目录。
如果是需要连同编译opencv_contrib,则是执行如下cmake命令:
cmake .. -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=../add_contrib_install -DWITH_CUDA=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-gnu.toolchain.cmake -DENABLE_PROFILING=OFF -DWITH_OPENCL=OFF -DBUILD_TESTS=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=OFF -DBUILD_opencv_js=OFF -DENABLE_NEON=ON -DOPENCV_EXTRA_MODULES_PATH=/home//opencv/opencv-4.5.5/opencv_contrib/modules
注意这里假定opencv_contrib 位于路径/home//opencv/opencv-4.5.5/opencv_contrib。 如果是别的路径,则相应地修改以上命令中最后的OPENCV_EXTRA_MODULES_PATH定义部分。