ubuntuARM编译使用Dlib、OpenCV

    技术2022-07-21  78

    参考文章:

    ubuntu安装Dlib(C++与Python)

    https://blog.csdn.net/sinat_38354963/article/details/90517321

    ubuntu编译使用Dlib、OpenCV

    https://blog.csdn.net/qq_34106574/article/details/85626465

    opencv之在Linux下编译opencv程序的两种方式g++、cmake(参考性较弱)

    https://blog.csdn.net/keith_bb/article/details/52864851

    ARM交叉编译工具下载、或已安装

    https://blog.csdn.net/baidu_38172402/article/details/82908838

    ARM编译Dlib、cmake 交叉编译防坑指南

    https://github.com/david8862/dlib_on_arm

    https://blog.csdn.net/cloudybear/article/details/79237137

    cmake编译参数修改,aarch64版本,-mtune=cortex-a35

    https://blog.csdn.net/yiran103/article/details/104065490

    https://community.arm.com/cn/f/discussions/9924/neon--mfpu-neon-fpu-64bit

    https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/AArch64-Options.html#AArch64-Options

    ubuntu下dlib编译C++(共享库)及使用,即cmake编译dlib开源文件的步骤和文件结构(讲解详细,example编译,好)

    https://blog.csdn.net/QTVLC/article/details/83313208

    dlib的gpu环境配置(python版)

    https://blog.csdn.net/jixinpu/article/details/83010456

    Dlib教程docs编译(编不过,作者用dlib.net的,makedocs报错)

    make: sphinx-build: Command not found

    https://blog.csdn.net/Will_Ye/article/details/106319473

    linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法(sudo apt-get install dos2unix)

    https://blog.csdn.net/w616589292/article/details/38274475/

    makedocs前需安装python版dlib(python setup.py install),下载dlib-master进行编译,代码全

     

    奉上我的编译代码:

    ubuntu主机

    编译安装Dlib

    mkdir x64_build cd x64_build cmake .. -DUSE_AVX_INSTRUCTIONS=1 cmake --build . --config Release sudo make install sudo ldconfig

    build.sh文件

    mkdir build cd build cmake .. make -j8 #用make也行

    CMakeLists.txt文件

    cmake_minimum_required(VERSION 2.8.4) #版本最小为2.8.4 PROJECT(dlib_facedetector) #设置工程名 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -DDLIB_JPEG_SUPPORT") IF(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything") ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") ENDIF() #INCLUDE OPENCV FIND_PACKAGE(OpenCV REQUIRED) INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) message(STATUS "Opencv include dir found at ${OpenCV_INCLUDE_DIRS}") #包含头文件 INCLUDE_DIRECTORIES(/home/robert/DeepLearning/Dlib/dlib-19.19.0) #dlib根目录地址 LINK_DIRECTORIES(/home/robert/DeepLearning/Dlib/dlib-19.19.0/x64_build/dlib/) #dlib编译后bulid下dlib地址 #生产类似于.exe的可执行文件 ADD_EXECUTABLE(${PROJECT_NAME} face_detection_dlib_hog.cpp) #链接库 TARGET_LINK_LIBRARIES(${PROJECT_NAME} dlib ${OpenCV_LIBS}) #TARGET_LINK_LIBRARIES(dlib_detector libjpeg.so)

    ARM板子编译Dlib

    build.sh文件

    #!/bin/bash set -e # Exit immediately if a command exits with a non-zero status. BuildDir=dlib_build if [ ! -d "$BuildDir" ]; then # Take action if $BuildDir doesn‘t exists. echo "create ${BuildDir}..." mkdir -p ${BuildDir} fi cd ${BuildDir} echo "building Dlib19.19.0" export LD_LIBRARY_PATH=/opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DBUILD_SHARED_LIBS=ON –build –config Release .. make -j$(nproc)

    CMakeLists.txt

    cmake_minimum_required(VERSION 2.8.12) get_directory_property(has_parent PERENT_DIRECTORY) if(NOT has_parent) set(DLIB_IN_PROJECT_BUILD false) endif() add_subdirectory(dlib)

    toolchain.cmake

    # this is required SET(CMAKE_SYSTEM_NAME Linux) # specify the cross compiler SET(CMAKE_C_COMPILER /opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc) SET(CMAKE_CXX_COMPILER /opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++) SET(CMAKE_SYSROOT /opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux) # where is the target environment SET(CMAKE_FIND_ROOT_PATH /opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux) # specify the compiler flag SET(CMAKE_C_FLAGS -O3 -mtune=cortex-a35) SET(CMAKE_CXX_FLAGS -std=c++11 -O3 -mtune=cortex-a35) # search for programs in the build host directories (not necessary) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

    ARM板子使用Dlib

    build.sh

    #!/bin/bash set -e # Exit immediately if a command exits with a non-zero status. BuildDir=dlib_build if [ ! -d "$BuildDir" ]; then # Take action if $BuildDir doesn‘t exists. echo "create ${BuildDir}..." mkdir -p ${BuildDir} fi cd ${BuildDir} echo "building face_detection_dlib_hog.cpp" export LD_LIBRARY_PATH=/opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux/usr/lib source /opt/fsl-imx-xwayland/4.14-sumo/environment-setup-aarch64-poky-linux #ToolChain=/opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DBUILD_SHARED_LIBS=ON –build –config Release .. make -j$(nproc)

    CMakeLists.txt

    cmake_minimum_required(VERSION 2.8.4) #版本最小为2.8.4 PROJECT(dlib_facedetector) #设置工程名 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -DDLIB_JPEG_SUPPORT") IF(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything") ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") ENDIF() #INCLUDE OPENCV FIND_PACKAGE(OpenCV REQUIRED) INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) message(STATUS "Opencv include dir found at ${OpenCV_INCLUDE_DIRS}") #包含头文件 INCLUDE_DIRECTORIES(/home/robert/DeepLearning/NXP-imx8QX/CompileResult/dlib-19.19.0) #dlib根目录地址 LINK_DIRECTORIES(/home/robert/DeepLearning/NXP-imx8QX/CompileResult/dlib-19.19.0/dlib_build/dlib/) #dlib编译后bulid下dlib地址 #生产类似于.exe的可执行文件 ADD_EXECUTABLE(${PROJECT_NAME} face_detection_dlib_hog.cpp) #链接库 TARGET_LINK_LIBRARIES(${PROJECT_NAME} dlib ${OpenCV_LIBS}) #TARGET_LINK_LIBRARIES(dlib_detector libjpeg.so)

    toolchain.cmake

    # this is required SET(CMAKE_SYSTEM_NAME Linux) # specify the cross compiler SET(CMAKE_C_COMPILER /opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc) SET(CMAKE_CXX_COMPILER /opt/fsl-imx-xwayland/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++) SET(CMAKE_SYSROOT /opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux) # where is the target environment SET(CMAKE_FIND_ROOT_PATH /opt/fsl-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux) # specify the compiler flag SET(CMAKE_C_FLAGS -O3 -mtune=cortex-a35) SET(CMAKE_CXX_FLAGS -std=c++11 -O3 -mtune=cortex-a35) # search for programs in the build host directories (not necessary) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

     

    Processed: 0.009, SQL: 10