一、前提条件;
需先安装好arm64相关的交叉编译器;
安装好cmake-gui;
下载并解压opencv3.4.6;
下载ippicv_2019_lnx_intel64_general_20180723.tgz
二、配置cmake
进入opencv3.4.6目录; cmake-gui并配置界面
步骤1:创建交叉编译方式
步骤2:配置交叉编译环境
步骤3:下方打印提示架构不支持不用管,Advanced勾选。
步骤4:修改下列配置
with_cuda确保关闭
with_tiff去掉勾

CMAKE_INSTALL_PREFIX写入安装路劲
CMAKE_EXE_LINKER_FLAGS写入 -lpthread -lrt -ldl添加编译环境变量

CMAKE_FIND_ROOT_PATH编译器路径:在交叉编译配置界面已经进行了配置,此处确认。

BUILD_opencv_world把所有编译后的.so库打包成一个库。

步骤5:点击Generate 生成cmake配置
三、修改源码几处BUG
1、vim 3rdparty/ippicv/ippicv.cmake 47行修改为ippicv_2019_lnx_intel64_general_20180723.tgz的保存路劲
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
改为
"file:///XXXX/Download/opencv/"
2、vim 3rdparty/protobuf/src/google/protobuf/stubs/common.cc 45行 添加
#define HAVE_PTHREAD
3、vim build/CMakeCache.txt
CMAKE_CXX_FLAGS:STRING=-fpermissive
4、vim 3rdparty/libpng/pngpriv.h 130行
# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
改为
# if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
四、编译并安装
make -j4;make install;
进入到安装目录的lib下可以看到 libopencv_world.so
aarch64-himix100-linux-strip libopencv_world.so去掉多余空间
将libopencv_world.so 拷贝到板子上/usr/lib下。
五、编译环境
编译时Makefile中添加
OPENCV_DIR := /XXX/opencv_hisi_arm
...
CPPFLAGS := -lopencv_world -lrt -lpthread -ldl -lstdc++ -O3 -Wall -g -s
...
CPPDEFINC := -I$(OPENCV_DIR)/include
...
LIBCPPFLAGS := -L$(OPENCV_DIR)/lib
...
aarch64-himix100-linux-g++ $(LIBCPPFLAGS ) $(CPPFLAGS ) $(CPPDEFINC ) -o app app.cpp

本文档详细介绍了如何在Ubuntu18上将OpenCV3.4.6移植到aarch64架构。首先,需要安装arm64交叉编译器和下载OpenCV源码。然后,通过cmake进行交叉编译配置,包括关闭CUDA支持、修改安装路径和链接器标志等。接着,修复源码中的几个BUG,并进行编译安装。最终,编译生成的libopencv_world.so库将被复制到目标板的/usr/lib目录下。
1551

被折叠的 条评论
为什么被折叠?



