参考资料:
1
2
3
4
5
工程参考
在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
参考以下资料进行配置
https://www.ebaina.com/articles/140000013416
https://zhuanlan.zhihu.com/p/84839635
https://blog.csdn.net/xidaoliang/article/details/124730226?spm=1001.2014.3001.5502进入opencv的build目录 make -j4
我遇到的一些错误
报错:#error “No suitable threading library available.” #error "No suitable threading library available.
解决:https://www.cnblogs.com/leoking01/p/16046212.html报错:undefined reference to ‘png_init_filter_functions_neon’
解决:修改3rdparty/libpng/pngpriv.h128: /*# 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
按照以下博客操作没有解决问题,可能opencv编译的还是有问题
http://blog.chinaunix.net/uid-28669227-id-4843715.html
https://blog.csdn.net/Cwenge/article/details/85326197
既然是找不到.so文件,那直接把…/…/lib的位置找到,把编译好的库(.so文件)直接复制进去是否可行?
或者直接用别人编译好的opencv库?
https://github.com/BaronLeeLZP/rockchip_rv1109_rknn-yolov3-demo