海思Hi3516DV300交叉编译opencv

OpenCV是一个开源的跨平台计算机视觉库,支持C++、Python等多种语言,适用于图像处理、目标检测、机器学习等任务。其核心由C++编写,高效轻量,提供实时视觉处理功能,广泛应用于工业自动化、医疗影像等领域。

1 环境准备

1.1 硬件要求

  • 开发主机:x86_64架构Linux系统(推荐Ubuntu 18.04/20.04),可以是虚拟机。
  • 目标平台:Hi3516DV300开发板
  • 存储空间:至少10GB可用空间
  • 内存:建议4GB以上

1.2 软件依赖

bash 复制代码
sudo apt-get update
sudo apt-get install -y \
    build-essential \
    cmake \
    git \
    pkg-config \
    libgtk2.0-dev \
    libavcodec-dev \
    libavformat-dev \
    libswscale-dev \
    python3-dev \
    libtbb2 \
    libtbb-dev \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libdc1394-22-dev

1.3 获取交叉编译工具链

从开发板厂家获取Hi3516DV300专用工具链,按照教程安装完成后,典型路径结构:

bash 复制代码
/opt/hisi-linux/x86-arm/arm-himix200-linux/bin

交叉编译工具链,默认已经加入环境变量,直接使用即可。

CXX编译器:

bash 复制代码
arm-himix200-linux-g++

C编译器

bash 复制代码
arm-himix200-linux-gcc

2 OpenCV源码处理

2.1 获取源码

推荐使用OpenCV 4.5.x版本:

bash 复制代码
wget https://github.com/opencv/opencv/archive/refs/tags/4.10.0.tar.gz
tar -xzvf opencv4.10.0.tar.gz
#进入opencv目录
cd opencv4.10.0

2.2 创建编译目录

bash 复制代码
mkdir build

2.3 创建安装目录

bash 复制代码
mkdir install && cd build

3 CMakeList配置详解

在build目录下,建立编译脚本build.sh:

bash 复制代码
#!/bin/bash
cmake -D CMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc \
-D CMAKE_CXX_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++ \
-D BUILD_SHARED_LIBS=ON \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/root/workspace/project/opencv-4.10.0/install \
-D BUILD_SHARED_LIBS=ON \
-D CMAKE_CXX_FLAGS=  -fpermissive -fPIC \
-D CMAKE_C_FLAGS= -fPIC \
-D CMAKE_EXE_LINKER_FLAGS= -lpthread -lrt -ldl \
-D PKG_CONFIG_FOUND=ON \
-D OPENCV_ENABLE_PKG_CONFIG=ON \
-D ENABLE_PIC=ON \
-D WITH_1394=OFF \
-D WITH_ARAVIS=OFF \
-D WITH_ARITH_DEC=ON \
-D WITH_ARITH_ENC=ON \
-D WITH_CLP=OFF \
-D WITH_CUBLAS=OFF \
-D WITH_CUDA=OFF \
-D WITH_CUFFT=OFF \
-D WITH_FFMPEG=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_GSTREAMER_0_10=OFF \
-D WITH_HALIDE=OFF \
-D WITH_HPX=OFF \
-D WITH_IMGCODEC_HDR=OFF \
-D WITH_IMGCODEC_PXM=OFF \
-D WITH_IMGCODEC_SUNRASTER=OFF \
-D WITH_INF_ENGINE=OFF \
-D WITH_IPP=OFF \
-D WITH_ITT=OFF \
-D WITH_JASPER=OFF \
-D WITH_JPEG=ON \
-D WITH_LAPACK=ON \
-D WITH_LIBREALSENSE=OFF \
-D WITH_NVCUVID=OFF \
-D WITH_OPENCL=OFF \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF \
-D WITH_OPENCL_SVM=OFF \
-D WITH_OPENEXR=OFF \
-D WITH_OPENGL=OFF \
-D WITH_OPENMP=OFF \
-D WITH_OPENNNI=OFF \
-D WITH_OPENNNI2=OFF \
-D WITH_OPENVX=OFF \
-D WITH_PNG=ON \
-D WITH_PROTOBUF=OFF \
-D WITH_PTHREADS_PF=ON \
-D WITH_PVAPI=OFF \
-D WITH_QT=OFF \
-D WITH_QUIRC=OFF \
-D WITH_TBB=OFF \
-D WITH_TIFF=OFF \
-D WITH_VULKAN=OFF \
-D WITH_WEBP=ON \
-D WITH_XIMEA=OFF \
-D BUILD_opencv_highgui=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PNG=ON \
-D BUILD_JPEG=ON \
-D BUILD_ZLIB=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_opencv_python_tests=OFF \
-D BUILD_opencv_stitching=OFF \
-D BUILD_opencv_world=ON \
..

3.1 基本配置

配置交叉编译器

bash 复制代码
-D CMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc \
-D CMAKE_CXX_COMPILER=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++ \

3.2 编译为动态库

bash 复制代码
-D BUILD_SHARED_LIBS=ON \
-D CMAKE_BUILD_TYPE=RELEASE \

3.3 编译为一个.so(opencv_world.so)

bash 复制代码
-D BUILD_opencv_world=ON

3.4开启NEON指令集

bash 复制代码
-D ENABLE_NEON=ON \
-D CMAKE_CXX_FLAGS="-march=armv7-a -mfpu=neon-vfpv4"

4、编译与打包

4.1 编译

bash 复制代码
./build.sh
make -j4

4.2 安装到指定目录

bash 复制代码
make install

典型安装目录结构:

复制代码
install/
├── bin
├── include
├── lib
└── share
相关推荐
盼小辉丶17 分钟前
视频生成技术Deepfake
人工智能·深度学习·计算机视觉·keras·生成模型
CV-杨帆23 分钟前
复现 Qwen3Guard 实时安全,逐词响应
人工智能·语言模型
人工智能技术派34 分钟前
LTU-AS:一种具备音频感知、识别、理解的大模型架构
人工智能·语言模型·语音识别
youcans_1 小时前
【AGI使用教程】Meta 开源视觉基础模型 DINOv3(1)下载与使用
人工智能·计算机视觉·agi·基础模型·dino
要做朋鱼燕2 小时前
【OpenCV】图像处理实战:边界填充与阈值详解
图像处理·笔记·opencv·计算机视觉
DevYK2 小时前
企业级Agent开发教程(三)基于LangGraph开发低代码 AI Agent 轻量级开发框架
人工智能·agent
189228048612 小时前
NX482NX486美光固态闪存NX507NX508
大数据·网络·数据库·人工智能·性能优化
有才不一定有德2 小时前
从工具到语境:Anthropic 双文启示下的 AI 代理工程实践心得
人工智能
余衫马3 小时前
llama.cpp:本地大模型推理的高性能 C++ 框架
c++·人工智能·llm·llama·大模型部署
deephub3 小时前
Google开源Tunix:JAX生态的LLM微调方案来了
人工智能·深度学习·google·微调·大语言模型·jax