PC端:Ubuntu 16.04
opencv 版本: 3.4.13
编译器:aarch64-linux-gnu
工具:cmake
opencv-3.4.13
http://链接:https://pan.baidu.com/s/1YBohe41YuOhBZ2iCIupmLA 提取码:0012 --来自百度网盘超级会员V4的分享
opencv_contrib-3.4.13
http://链接:https://pan.baidu.com/s/1iyOl2QpZstdew5hyxVLlsQ 提取码:0012 --来自百度网盘超级会员V4的分享
全程用 root 用户运行。
(1)安装没有版本号的gcc-aarch64-linux-gnu
apt-get install gcc-aarch64-linux-gnu
(2) 安装gcc开头的5版本的支持64bit ARM linux的交叉编译工具
apt-get install gcc-5-aarch64-linux-gnu
(3) 安装没有版本号的g++编译工具
apt-get install g++-aarch64-linux-gnu
(4) 安装4.9版本号的g++编译工具
apt-get install g++-4.9-aarch64-linux-gnu
(5) 安装cmake
apt-get install cmake
(6)拷贝源码到Ubuntu中,(哪个目录下都行)
(7)在 opencv-3.4-13 下 创建创建两个文件夹,(名字随便指定,一个是编译用的,一个是安装用的)如下
(8)创建完后进入 build文件中,打开cmake
(9)cmake参数配置(注意,整个过程要保证Ubuntu能上网,因为编译过程中会自动下载东西)
最后一张图的第二个框中 C 和 C++ 选择前面安装的aarch64-linux-gnu,默认会安装在/usr/bin下,这里注意自己的 aarch64-linux-gnu 安装位置 ,(按照自己的位置来!)
Target root 我也不大懂,随便填的,对编译问题不大 。
(10) 修改配置
修改安装目录。
指定 opencv_contrib-3.4.13位置
自此,cmake 参数配置完成。然后 先点击configue再点击generate
在 build 文件下执行 make (可根据自身虚拟机配置情况指定编译线程数 如 make -j4)
make -j4
编译过程中一定会报错,不过不用担心。
错误一、
../../lib/libopencv_imgcodecs.so.3.4.13: undefined reference to `png_do_expand_palette_rgb8_neon'
../../lib/libopencv_imgcodecs.so.3.4.13: undefined reference to `png_init_filter_functions_neon'
../../lib/libopencv_imgcodecs.so.3.4.13: undefined reference to `png_do_expand_palette_rgba8_neon'
../../lib/libopencv_imgcodecs.so.3.4.13: undefined reference to `png_riffle_palette_neon'
collect2: error: ld returned 1 exit status
解决方法:
进入 自己的 opencv-3.4.13/3rdparty/libpng/pngpriv.h 中将
if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
改为
if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
再次 执行 make 命令
错误二、
因为网络原因,cmake的时候,一些文件没下全,编译时报错如下,
vgg_generated_120.i: No such file or directory
其实,我这里少了11个文件,不在一一贴图了,报错内容差不多,少的文件分别为 vgg_generated_48.i,vgg_generated_64.i、vgg_generated_80.i、vgg_generated_120.i、boostdesc_lbgm.i、boostdesc_bgm_bi.i、boostdesc_bgm_hd.i、boostdesc_bgm.i、boostdesc_binboost_064.i、boostdesc_binboost_128.iboostdesc_binboost_256.i
这边放百度网盘了,需要的自提,另外,文件查找不易,请点赞支持支持!!!
http://链接:https://pan.baidu.com/s/1WBt9rZCIs5NbOo_MbfjivA 提取码:0012 --来自百度网盘超级会员V4的分享
然后把 下载下来的文件放在自己的 opencv_contrib-3.4.12/modules/xfeatures2d/src 下即可。然后继续 执行 make命令
错误三、
因为路径问题报错
fatal error: opencv2/xfeatures2d/nonfree.hpp: No such file or directory
这里会报好几个类似的问题,解决方法是一样的,不在一一贴图了。
如,这问题,进入自己的 opencv_contri-3.4.12/modules/xfeatures/include/opencv2/xfeatures2d.hpp,将 43行的
#include "opencv2/xfeatures2d/nonfree.hpp"
改为绝对路径,如
#include "/home/aunov/opencv_contri3.4.12/modules/xfeatures/include/opencv2/xfeatures2d/nonfree.hpp"
修改完继续 执行 make命令
我的到这样已经没有再报错了
(11)编译的最后一步
make install
完成后,会在自己的install下生成如下文件夹
自此,编译已经完成!!!
(1)打包 自己的 install 目录
tar -cvf aarch64_install.tar arrch64_insatll
(2)将 打包的文件 拷贝到 RK3588 中的 任意一个文件夹下并解压,我的放在了 /usr/bin下
解压命令
tar -vxf aarch64_install.tar
(3) 添加路径
打开 /etc/ld.so.conf文件
vi /etc/ld.so.conf
添加库的绝对路径,如下
保存并退出
生效路径
ldconfig
自此,opencv 移植完成
用Qt写了一个小程序,运行效果如下
http://链接:https://pan.baidu.com/s/1rJzIk_TfMLBlhEI4sXxS7w 提取码:0012 --来自百度网盘超级会员V4的分享