RK3588移植-opencv交叉编译aarch64

文章参考:https://blog.csdn.net/KayChanGEEK/article/details/80365320

文章目录

    • 概括
    • 准备资源
    • 交叉编译OPENCV
    • 修改CMakelist文件
    • 将lib库复制到/lib目录

注意:本文中的所有配置相关路径都与当前安装的路径有关,需要根据自己的环境进行自行修改!!!

概括

在做yolov5移植rk3588时,由于RKNPU2的example中opencv库不全,缺少VideoCapture\imshow等函数,所以需要自己重新交叉编译opencv并将编译好的aarch64动态库导入,由于网上资料很多不可用,故记录下来操作流程。

准备资源

1.cmake
2.opencv (官网下载,解压即可)
3.交叉编译器(gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz)注意这个版本适用于linux64位系统->aarch64位开发板。
下载链接:https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/
RK3588移植-opencv交叉编译aarch64_第1张图片
下载后进行解压。

交叉编译OPENCV

ps:需要根据你的安装环境来更改具体命令
1、进入opencv源码目录
cd /opt/arm/opencv320_64
2、建立文件夹build和cv_sdk,build用来存放编译时的二进制文件,cv_sdk用来存放编译后的文件
mkdir build cv_sdk
3、进入build目录,运行cmake-gui:
cd build/
sudo cmake-gui
4、设置源码目录和构建目录如下图
RK3588移植-opencv交叉编译aarch64_第2张图片
第一个框填入opencv的目录,第二个框填入opencv目录下的build目录
5、点击Add Entry,按照下图添加ar命令配置
RK3588移植-opencv交叉编译aarch64_第3张图片

6、点击Configure,选择Specify toolchain for cross-compiling,如下图
RK3588移植-opencv交叉编译aarch64_第4张图片

7、点击Next,设置Specify the toolchain file,在opencv源码目录下的platforms/linux/目录选择对应的toolchain file,如下图
RK3588移植-opencv交叉编译aarch64_第5张图片
8、点击Finish

9、设置宏CMAKE_INSTALL_PREFIX的值为刚才创建的cv_sdk路径

10、设置宏CMAKE_BUILD_TYPE的值为Release

11、选中宏WITH_GTK_2_X,去掉宏WITH_GTK

12、再次点击Configure,再点击Generate,关掉cmake-gui

13、sudo make -j8 &&make install

14、到此在cv_sdk目录下生成目标平台的库

到这里,opencv的交叉编译(aarch64)就完成了,编译生成的动态库文件位于opencv目录下的cv_sdk文件夹下,可以通过file 文件名查看动态库的平台。通过下图可以看到动态库文件已经被编译为64位aarch64格式。
在这里插入图片描述

修改CMakelist文件

example中的样例使用的是一个简易的opencv库,需要切换到自己编译生成的opencv库,故需要修改example/rknn_yolov5_demo下的CMakeList.txt文件。
将OpenCV_DIR变量修改为opencv目录下的cv_sdk/lib/cmake/opencv4,如下图所示。
注意:这里的路径必须用绝对路径由/开头,不能够识别~/家目录
RK3588移植-opencv交叉编译aarch64_第6张图片
进行上序修改之后就可以进行正常编译了,执行sudo ./build-linux_RK3588.sh 即可正确生成可执行文件。

将lib库复制到/lib目录

虽然已经能够正确生成可执行文件,但是如果按照之前的步骤adb push install …一顿操作下,会发现在板子端运行可执行程序仍然会报没有找到xxx.so文件的错误。需要将opencv下所有的.so文件放到install/rknn_yolov5_demo_Linux/lib目录下。

cp ~/Downloads/opencv-4.6.0/cv_sdk/lib/*
rknpu2/…/install/rknn_yolov5_demo_Linux/lib

然后再在进入板子的时候添加LD目录即可正确运行。
在adb shell中的rknn_yolov5_demo_Linux目录下执行
export LD_LIBRARY_PATH=./lib

你可能感兴趣的:(边缘计算,opencv,计算机视觉,人工智能)