Dlib+OpenCV交叉编译移植到ARM64-v8平台

系统环境

ubuntu16.04 + dlib + opencv320 + qt560

 

准备资源

 

 

1、Dlib源码 - https://github.com/davisking/dlib

2、OpenCV源码(这里使用OpenCV320) - https://www.opencv.org/releases.html

3、CMake3.5.1 - sudo apt-get install cmake cmake-qt-gui

4、交叉编译器(这里使用gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux) - 适合自己ARM平台的交叉编译工具链

 

交叉编译Qt(如果需要)

参考《Qt移植到ARM64-v8平台(NXP i.MX8M)笔记

 

交叉编译opencv

 

 

1、进入opencv源码目录 - cd ${YourOpencvSourceDir}

2、建立文件夹build和cv_sdk - mkdir build cv_sdk

3、进入build目录,运行cmake-gui - cmake-gui

4、设置源码目录和构建目录如下图

5、点击Add Entry,按照下图添加ar命令配置

6、点击Configure,选择Specify toolchain for cross-compiling,如下图

7、点击Next,设置Specify the toolchain file,在opencv源码目录下的platforms/linux/目录选择对应的toolchain file,如下图

 

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、make && make install

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

 

交叉编译Dlib

 

 

1、进入dlib源码目录 - cd ${YourDlibSourceDir}

2、建立文件夹build和dlib_sdk - mkdir build dlib_sdk

3、进入build目录,运行cmkae-gui - cmake-gui

4、设置源码目录和构建目录如下图

 

5、点击Configure,选择Specify toolchain for cross-compiling(注:和上面编译opencv选择同一个toolchain file即可)

6、点击Finish

7、设置宏CMAKE_INSTALL_PREFIX的值为刚才创建的dlib_sdk路径

8、设置宏CMAKE_BUILD_TYPE的值为Release

9、再次点击Configure(不出意外会提示以下信息,先不予理会),再点击Generate,关掉cmake-gui

 *****************************************************************************
 *** DLIB GUI SUPPORT DISABLED BECAUSE X11 DEVELOPMENT LIBRARIES NOT FOUND ***
 *** Make sure libx11-dev is installed if you want GUI support.            ***
 *** On Ubuntu run: sudo apt-get install libx11-dev                        ***
 *****************************************************************************

 

10、make && make install

11、到此在dlib_sdk目录下生成目标平台的库

 

在ARM平台配置opencv和dlib运行环境

 

将cv_sdk和dlib_sdk拷贝到ARM平台,然后设置他们的lib环境变量即可

 

编写demo代码测试

 

代码功能基本和我的这篇文章《Dlib实现人脸特征点检测全过程》一样,交叉编译完就可以拷贝到ARM平台上运行了。但是交叉编译demo代码的时候可能会出现以下错误:

#error "DLIB_NO_GUI_SUPPORT is defined so you can't use the GUI code.  Turn DLIB_NO_GUI_SUPPORT off if you want to use it."
#error "Also make sure you have libx11-dev installed on your system"

这是因为刚才cmake的时候DLIB_NO_GUI_SUPPORT是ON状态的,但是就算设成OFF,也会提示X11 DEVELOPMENT LIBRARIES NOT FOUND,会自动将其设置为ON。

 

解决方法1:sudo apt-get install libx11-dev,然后重新cmake,将DLIB_NO_GUI_SUPPORT设置为OFF,重新make即可。

解决方法2:暴力解决法,进入文件gui_core_kernel_2.h,直接将这两个#error注释掉,重新编译即可通过,如下图:

 

ARM平台运行效果

 

成功运行,但是速度不认直视,同是CPU跑和PC比差距太大!有人说是因为在Intel平台有针对dlib用SSE,AVX指令集做加速。附上效果图:

技术交流

图像处理-深度学习技术交流群:qq群:247270428

如果文章对您有帮助,打赏一包辣条吧,DaLao们。

 

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值