原文链接

欢迎大家对于本站的访问 - AsterCasc

前言

在阅读本文之前,默认已阅读前文C++常用库交叉编译方法(一)(环境构建和Qt以及Boost)前言环境构建部分,该文章的其他的部分可以根据需求决定是否阅读

本文以及后续相关内容都在前文生成的容器中处理,命令行内容除非特殊说明,否则都在该容器执行

OpenCV

关于OpenCV交叉编译相关内容,前文已经提及,参考交叉编译armv7运行环境以及嵌入式opencv的编译示例,这里就不详细展开了,只书写该容器下的命令行部分

# 代码拉取
cd /data/src && mkdir opencv && cd opencv
wget -O target.zip   https://codeload.github.com/opencv/opencv/zip/refs/tags/4.11.0
unzip target.zip && rm -f target.zip && cd opencv*

# 工具链配置
mv platforms/linux/arm-gnueabi.toolchain.cmake platforms/linux/arm-gnueabi.toolchain.cmake.bk
cat <<'EOF' > platforms/linux/arm-gnueabi.toolchain.cmake
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "arm-linux-gnueabi" CACHE STRING "GNU compiler triple")

#指定工具链
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)

#生成静态库而不是动态库
set(BUILD_SHARED_LIBS OFF)
#构建详细输出
set(CMAKE_VERBOSE_MAKEFILE ON)
#opencv生成pkconfig便于编译
set(OPENCV_GENERATE_PKGCONFIG ON)
#生成Release版本
set(CMAKE_BUILD_TYPE Release)

#补充构建和链接
set(BUILD_ZLIB ON)
set(BUILD_OPENEXR ON)
set(BUILD_ILMIMF ON)
set(BUILD_TBB ON)
set(BUILD_JASPER ON)
set(BUILD_PNG ON)
set(BUILD_JPEG ON)
set(BUILD_TIFF ON)
set(CMAKE_EXE_LINKER_FLAGS "-pthread -ldl -lrt")

include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
EOF

cd platforms/linux/ && mkdir build && cd build
# 构建
cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake -DCMAKE_INSTALL_PREFIX=../../../../_install ../../..
make -j$(nproc)  && make install

使用方面:

cmake_minimum_required(VERSION 3.10)

project(demo)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

set(OPENCV_ROOT /data/src/opencv/_install)
set(CMAKE_PREFIX_PATH
	"${OPENCV_ROOT}"
    )

find_package(OpenCV REQUIRED)

message(STATUS "OpenCV version: ${OpenCV_VERSION}")
message(STATUS "OpenCV libraries: ${OpenCV_LIBS}")

add_executable(Demo main.cpp)
target_link_libraries(Demo PRIVATE
    ${OpenCV_LIBS}
    )

InspireFace

同样关于InspireFace的编译和使用,在本站嵌入式开发人脸识别模块从0开始全流程(树莓派5为例)已经写过基本步骤,这里不再赘述,给出命令行部分

cd /data/src
mkdir InspireFace && cd InspireFace
wget -O 1.zip https://github.com/HyperInspire/InspireFace/archive/refs/heads/master.zip
unzip 1.zip && rm -rf 1.zip && cd InspireFace*
git clone --recurse-submodules https://github.com/tunmx/inspireface-3rdparty.git 3rdparty
vim command/build_cross_armv7_armhf.sh
# ↑ 这里我们可以将 make -j4 改为 make -j$(nproc) 加快编译
export ARM_CROSS_COMPILE_TOOLCHAIN=/data/gcc-8.3.0/src
bash command/build_cross_armv7_armhf.sh

即可完成,安装位置位于/data/src/InspireFace/InspireFace-master/build/inspireface-linux-armv7-armhf/InspireFace

libfacedetection

如果不需要人脸识别,只需要人脸检测。那么这里推荐使用libfacedetection来完成需求,关于这个库的交叉编译和基本使用,此事在本站实现嵌入式设备中的人脸检测中亦有记载,这里就仅给出相应命令行

cd /data/src
mkdir facedetect && cd facedetect
git clone https://github.com/ShiqiYu/libfacedetection.git
cd libfacedetection && cp arm-gnueabi.toolchain.cmake arm-gnueabi.toolchain.cmake.bk
cat <<'EOF' > arm-gnueabi.toolchain.cmake

set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "arm-linux-gnueabihf" CACHE STRING "GNU compiler triple")

set(CMAKE_SYSTEM_PROCESSOR "arm")

set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ )

set(BUILD_SHARED_LIBS OFF)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_BUILD_TYPE Release)
option(DEMO "" OFF)

option(ENABLE_AVX2 "" OFF)
option(ENABLE_NEON "" ON)
option(USE_OPENMP "" ON)

EOF
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake -DCMAKE_INSTALL_PREFIX=../../install   ..
make && make install

完成后,安装位置位于/data/src/facedetect/install

原文链接

欢迎大家对于本站的访问 - AsterCasc

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐