系统环境
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们。