在RK3588 c++的开发中用到了opencv库,但是官方的SDK例程中的opencv库不完整,如没有读视频的cv::VideoCapture函数,所以重新编译opencv库
opencv库可以直接在RK3588上进行编译,也可以选择在自己的Ubuntu上交叉编译opencv,然后在RK3588上调用编译好的库文件。
目标板:RK3588
PC:ubuntu18.04
opencv版本:3.4.5:https://opencv.org/releases/
编译工具链:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu:https://developer.arm.com/downloads/-/gnu-a
步骤:
下载opencv源码,创建build和install文件夹
cd opencv-3.4.5
mkdir build
mkdir install
安装cmake
sudo snap install cmake --classic
gcc环境变量配置
vim ~/.bashrc
在最后添加
export PATH="/home/wyh/opencv/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH"
使环境变量生效
source ~/.bashrc
验证gcc
arm-none-linux-gnueabihf-gcc -v
启动cmake-gui完成配置然后进行编译
cmake-gui
进入opencv的build目录
make -j4
我遇到的一些错误
报错:#error “No suitable threading library available.” #error "No suitable threading library available.
报错:undefined reference to ‘png_init_filter_functions_neon’
解决:修改3rdparty/libpng/pngpriv.h
128: /*# if (defined( ARM_NEON ) || defined(__ARM_NEON)) && */
129:if defined(PNG_ARM_NEON) && (defined( ARM_NEON ) || defined(__ARM_NEON)) &&
编译成功后:
make install
最后把install文件夹复制到板子上
将板子上工程里的CMakeLists.txt文件中配置好新编译的opencv库的路径
编译项目工程生成可执行文件
. build-linux-RK3588.sh
. run.sh
目前opencv编译成功了,但是移植到板子上编译项目时会出现
这类错误:error while loading shared libraries: …/…/lib/libopencv_core.so
原作者:Bugger99
|