OpenCV 3.4.12 + opencv_contrib Ubuntu交叉编译到arm(rv1126_rv1109)开发板

OpenCV 3.4.12 + opencv_contrib Ubuntu交叉编译至arm(rv1126_rv1109)开发板

一、安装依赖库

alientek@ubuntu:~/opencv$ sudo apt-get install lib32z1 cmake cmake-qt-gui build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff5-dev libswscale-dev

二、获取OpenCV及opencv_contrib源码包

GitHub获取:

【opencv_contrib 3.4.12】https://github.com/opencv/opencv_contrib.git

【OpenCV 3.4.12】https://github.com/opencv/opencv.git

将源码包下载下来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XvVfzri4-1676680735494)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217105416603.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wRe5GvCs-1676680735494)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217105515121.png)]

下载到Ubuntu后,将opencv_contrib放在opencv主目录下

alientek@ubuntu:~$ ls
公共的  视频  文档  音乐  ai  opencv-3.4.12.zip  sdk
模板    图片  下载  桌面  opencv_contrib-3.4.12.zip  test
alientek@ubuntu:~$ unzip opencv_contrib-3.4.12.zip
alientek@ubuntu:~$ unzip opencv-3.4.12.zip
alientek@ubuntu:~$ ls
公共的  视频  文档  音乐  ai             opencv-3.4.12.zip      opencv_contrib-3.4.12.zip  test
模板    图片  下载  桌面  opencv-3.4.12  opencv_contrib-3.4.12  sdk
alientek@ubuntu:~$ mv opencv_contrib-3.4.12 ./opencv-3.4.12/
alientek@ubuntu:~$ ls
公共的  视频  文档  音乐  ai             opencv-3.4.12.zip          sdk
模板    图片  下载  桌面  opencv-3.4.12  opencv_contrib-3.4.12.zip  test
alientek@ubuntu:~$ cd opencv-3.4.12/
alientek@ubuntu:~/opencv-3.4.12$ ls
3rdparty  cmake           CONTRIBUTING.md  doc      LICENSE  opencv_contrib-3.4.12  README.md
apps      CMakeLists.txt  data             include  modules  platforms              samples
alientek@ubuntu:~/opencv-3.4.12$ mkdir build install
alientek@ubuntu:~/opencv-3.4.12$ ls
3rdparty  build  CMakeLists.txt   data  include  LICENSE  opencv_contrib-3.4.12  README.md
apps      cmake  CONTRIBUTING.md  doc   install  modules  platforms              samples

三、配置cmake

alientek@ubuntu:~/opencv/build$ sudo cmake-gui ..

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSheQpKN-1676680735495)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217111015807.png)]

出现以下界面,按如下配置(交叉编译)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AuC15QQo-1676680735496)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217092405589.png)]

点击Next>后,出现以下界面,按如下配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HtFkHmvL-1676680735496)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217093024463.png)]

修改安装路径,这里我选择:/home/alientek/opencv-3.4.12/install (默认安装在/opt/local 建议换个路径)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJLh6yHF-1676680735497)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217111504854.png)]

选择opencv_contrib-3.4.12/modules路径(如要使用有专利保护的算法,就勾选OPENCV_ENABLE_NONFREE,我这里没有勾选)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ARqaIL2D-1676680735497)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217111432663.png)]

取消勾选BUILD_PROTOBUF WITH_PROTOBUF

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aLQqob77-1676680735498)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217094944977.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkOkWGam-1676680735498)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217095028419.png)]

勾选BUILD_ZLIB (因为自带的zlib库位x86架构)

勾选BUILD_PNG BUILD_JPEG BUILD_TIFF

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9fm8ON7q-1676680735507)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217140328114.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DsUt96p6-1676680735509)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217140400789.png)]

配置完后点击Configure,然后点击Generate

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AlYCbWEW-1676680735509)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217112038495.png)]

关闭cmake-gui,回到终端界面

alientek@ubuntu:~/opencv-3.4.12/build$ sudo make -j16

编译完成后安装

alientek@ubuntu:~/opencv-3.4.12/build$ sudo make install

四、报错解决办法

问题

../../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

解决办法

alientek@ubuntu:/opt/atk-dlrv1126-toolchain/usr/include$ cd ~/opencv-3.4.12/3rdparty/libpng/
alientek@ubuntu:~/opencv-3.4.12/3rdparty/libpng$ vim pngpriv.h

将头文件中的

if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

改为

if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

由于每个人遇到的问题各不相同,大多数问题都可以在百度或者Google解决,根据我的流程配置,能够避免绝大多数问题

如果还有其他问题,可以参照以下三篇博客解决

opencv-3.4.1-arm编译安装 – 超详细_叶大杰的博客-CSDN博客_opencv arm编译

ubuntu交叉编译Opencv-4.2及contrib库并移植ARM开发板_opencv_contrib-4移植_曾哥电子设计的博客-CSDN博客

( RK3588移植opencv(包含opencv_contrib)过程_aunov的博客-CSDN博客

五、配置环境

安装完成后,可查看安装路径有如下文件

alientek@ubuntu:~/test$ cd ~/opencv-3.4.12/install/
alientek@ubuntu:~/opencv-3.4.12/install$ ls
bin  include  lib  share

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nnvQ5u3C-1676680735510)(C:\Users\ATKSZ00043\AppData\Roaming\Typora\typora-user-images\image-20230217164932662.png)]

打开 /etc/ld.so.conf 文件

alientek@ubuntu:~/opencv-3.4.12/install/lib$ sudo vim /etc/ld.so.conf

将刚刚安装opencv的库目录添加到最后一行

/home/alientek/opencv-3.4.12/install/lib

保存退出并生效配置

alientek@ubuntu:~/opencv-3.4.12/install/lib$ ldconfig

将库文件发送到开发板(我使用abd工具,你按照自己其他方式发送文件也行,只要能将库文件发到开发板就没问题)

5555为adb连接后给出的端口号

/usr/lib/ 为开发板端用户库目录

alientek@ubuntu:~/opencv-3.4.12/install/lib$ adb connect 192.168.0.99
alientek@ubuntu:~/opencv-3.4.12/install/lib$ adb -s 192.168.0.99:5555 push *opencv* /usr/lib/

ps:按照我的流程编译出来的库经测试,少了两个库,我把这两个库以及其他所有库放在百度网盘里,各位自行下载

分别是opencv_dnn 以及 opencv_freetype

下载后放在Ubuntu端opencv的lib目录中,同样也要放在开发板的/usr/lib目录中

链接:https://pan.baidu.com/s/1CCmoJzcwiiLc2lrpmi0z_A?pwd=ew9o 
提取码:ew9o

至此,OpenCV 3.4.12及opencv_contrib 3.4.12交叉编译就已经完成,后续需要使用opencv时,在Ubuntu端使用交叉编译工具编译后将可执行文件发送到板端即可运行

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值