交叉编译 opencv-4.10

编译说明

opencv 下包含很多模块,各个模块的作用可以参考Opencv---模块概览. 嵌入式考虑有限存储等因素会对模块进行裁剪,我这里主要保留图像拼接(stitching)图片编解码(imgcodecs)与特征点匹配(feature2d)及其依赖模块,下面是编译过程。

编译过程

  1. github下载opencv库.
  2. 配置交叉编译工具,我这里是 hi3159dv500 的交叉编译工具链,大家根据自己的进行cmake配置。
bash 复制代码
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)

# 环境库
set(CMAKE_FIND_ROOT_PATH /home/hisi/workspace/hocker/pack/3ds/buildroot/output/hisi_3519/host/aarch64-buildroot-linux-gnu/sysroot)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_SYSROOT ${CMAKE_FIND_ROOT_PATH})

# 安装路径配置,这个他们需要绝对路径
set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/lib-aarch64" CACHE PATH "Installation Directory")  


set(CMAKE_FIND_USE_CMAKE_SYSTEM_PATH FALSE)
# set(CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH FALSE)
set(CMAKE_FIND_USE_CMAKE_PATH FALS)


set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_FIND_ROOT_PATH})
set(ENV{PKG_CONFIG_LIBDIR} ${CMAKE_FIND_ROOT_PATH}/usr/lib/pkgconfig)
set(ENV{PKG_CONFIG_PATH} "")

set(TARGET_ARCH arm64)
bash 复制代码
cd build
# rm ../build/* -rf 
# 这里的命令一定要加 TARGET_ARCH=arm64, 不然 编译 png 的时候 不支持 neno, 导致 imgcodecs 编译失败
cmake .. \
  -DBUILD_LIST=core,imgproc,features2d,stitching,calib3d,flann,imgcodecs \
  -DBUILD_opencv_dnn=OFF \
  -DBUILD_opencv_highgui=OFF \
  -DBUILD_opencv_videoio=OFF \
  -DBUILD_opencv_calib3d=ON \
  -DWITH_PYTHON=OFF \
  -DWITH_opencv_stitching=ON \
  -DBUILD_opencv_world=OFF \
  -DBUILD_TESTS=OFF \
  -DBUILD_EXAMPLES=OFF \
  -DWITH_GTK=OFF \
  -DWITH_JPEG=ON \
  -DWITH_PNG=ON \
  -DTARGET_ARCH=arm64 \
  -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake
make -j8

编译结果

  1. 编译过程输出(这里主要看库编译过程,仅供参考)
bash 复制代码
-- Build files have been written to: /home/hisi/workspace/hocker/3ds/opencv-4.10.0/build
Consolidate compiler generated dependencies of target libopenjp2
Consolidate compiler generated dependencies of target jpeg16-static
Consolidate compiler generated dependencies of target zlib
[  0%] Built target opencv_dnn_plugins
Consolidate compiler generated dependencies of target jpeg12-static
[  0%] Built target opencv_highgui_plugins
[  0%] Built target opencv_videoio_plugins
Consolidate compiler generated dependencies of target libwebp
[  3%] Built target zlib
[  7%] Built target libopenjp2
[ 10%] Built target jpeg16-static
Scanning dependencies of target libpng
Consolidate compiler generated dependencies of target libpng
Consolidate compiler generated dependencies of target libtiff
[ 15%] Built target jpeg12-static
[ 18%] Built target libpng
Consolidate compiler generated dependencies of target libjpeg-turbo
[ 26%] Built target libtiff
Consolidate compiler generated dependencies of target opencv_core
[ 45%] Built target libwebp
[ 54%] Built target libjpeg-turbo
[ 69%] Built target opencv_core
Consolidate compiler generated dependencies of target opencv_version
Consolidate compiler generated dependencies of target opencv_flann
[ 69%] Built target opencv_version
[ 70%] Built target opencv_flann
Consolidate compiler generated dependencies of target opencv_imgproc
[ 82%] Built target opencv_imgproc
Consolidate compiler generated dependencies of target opencv_imgcodecs
Consolidate compiler generated dependencies of target opencv_features2d
[ 90%] Built target opencv_imgcodecs
[ 90%] Built target opencv_features2d
Consolidate compiler generated dependencies of target opencv_calib3d
[ 97%] Built target opencv_calib3d
Consolidate compiler generated dependencies of target opencv_stitching
[100%] Built target opencv_stitching
  1. 编译出来的库文件如下
bash 复制代码
$ ls ../build/lib/ 
libopencv_calib3d.so         libopencv_features2d.so.410     libopencv_imgcodecs.so.4.10.0
libopencv_calib3d.so.410     libopencv_features2d.so.4.10.0  libopencv_imgproc.so
libopencv_calib3d.so.4.10.0  libopencv_flann.so              libopencv_imgproc.so.410
libopencv_core.so            libopencv_flann.so.410          libopencv_imgproc.so.4.10.0
libopencv_core.so.410        libopencv_flann.so.4.10.0       libopencv_stitching.so
libopencv_core.so.4.10.0     libopencv_imgcodecs.so          libopencv_stitching.so.410
libopencv_features2d.so      libopencv_imgcodecs.so.410      libopencv_stitching.so.4.10.0
  1. 编译出来的库大小
bash 复制代码
$ du --max-depth=0 -h ../build/lib/
16M     ../build/lib/
bash 复制代码
  1. 编译出来的库结果
bash 复制代码
$ file  ../build/lib/libopencv_*.4.10.0
../build/lib/libopencv_calib3d.so.4.10.0:    ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
../build/lib/libopencv_core.so.4.10.0:       ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
../build/lib/libopencv_features2d.so.4.10.0: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
../build/lib/libopencv_flann.so.4.10.0:      ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
../build/lib/libopencv_imgcodecs.so.4.10.0:  ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
../build/lib/libopencv_imgproc.so.4.10.0:    ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
../build/lib/libopencv_stitching.so.4.10.0:  ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, with debug_info, not stripped
相关推荐
银河以北呀11 分钟前
通过推测搜索加速大型语言模型推理 (SpecSearch) 论文总结
人工智能·语言模型·论文笔记
妄想成为master23 分钟前
快速入门深度学习系列(2)----损失函数、逻辑回归、向量化
人工智能·深度学习·神经网络
武乐乐~23 分钟前
YOLO-World:基于YOLOv8的开放词汇目标检测
人工智能·yolo·目标检测
打小就很皮...1 小时前
使用 React 实现语音识别并转换功能
人工智能·语音识别
老朋友此林1 小时前
MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构
人工智能·python·nlp
LitchiCheng1 小时前
复刻低成本机械臂 SO-ARM100 单关节控制(附代码)
人工智能·机器学习·机器人
微学AI1 小时前
大模型的应用中A2A(Agent2Agent)架构的部署过程,A2A架构实现不同机器人之间的高效通信与协作
人工智能·架构·机器人·a2a
AI视觉网奇2 小时前
MoE 学习笔记
人工智能
多巴胺与内啡肽.2 小时前
Opencv进阶操作:图像拼接
人工智能·opencv·计算机视觉
小草cys3 小时前
查看YOLO版本的三种方法
人工智能·深度学习·yolo