简单移植dlib和opencv到Androd平台进行人脸检测

本文介绍如何将dlib和opencv简单移植到Android进行人脸检测。首先准备dlib、opencv和NDK,然后通过Android Studio的C++项目进行编译,解决加载so文件时遇到的问题。接着将编译好的库导入新项目,配置CMakeLists.txt和build.gradle,编写C++代码进行人脸检测。最后展示简单的检测效果,并提到官方demo的运行速度较慢,未来会探讨优化方法。
摘要由CSDN通过智能技术生成

最近实在是忙于项目,太久都没有写博客了,结果一不小心竟然过了几个月了。既然有空就多写点东西,交流交流经验,总归是没有坏处的。
之前一直想做一下人脸检测,网上一大堆SDK全是收费的,而且基本上都不是本地检测。后来总算找到了dlib来进行人脸识别,踩了不少坑之后,总算是集成了上去。但是官方的demo速度实在太慢,后面有空会去学习一些优化经验,这篇文章直接从编译开始讲起集成,并且使用官方demo以及机器学习模型来进行人脸检测。

资料准备

首先下载dlib与opencv的新版,以及Android Studio的NDK工具准备。
dlib-19.16
opencv- 3.4.4
ndk-r17c
之前我想用18的,18坑多的令人难以置信,差点直接去世了,放弃治疗了直接换回低版本。
在这里插入图片描述

dlib编译

现在大部分c库都有python脚本来进行编译,但是配一些环境也是麻烦,我们直接用Android Studio来进行编译即可。新建一个Android Studio的C++项目,这一步我就不多提了。直接看编译的项目结构。
在这里插入图片描述我们把下载的dlib库的的源文件全部copy到cpp目录下。然后打开我们的才CMakeLists.txt。添加如下代码。

cmake_minimum_required(VERSION 3.4.1)


set(DLIB_IN_PROJECT_BUILD false)
set(BUILD_SHARED_LIBS true)  #编译成动态库
set(DLIB_NO_GUI_SUPPORT true) #不需要gui支持
set(ARM_NEON_IS_AVAILABLE true) #开启neon优化
set(DLIB_PNG_SUPPORT true) #打开PNG支持
#add_definitions(-DDLIB_PNG_SUPPORT)

add_subdirectory(src/main/cpp/dlib)

add_library(native-lib SHARED src/main/cpp/native-lib.cpp)
# Finally, you need to tell CMake that this program, assignment_learning_ex,
# depends on dlib.  You do that with this statement:
target_link_libraries(native-lib
        z
        log
        dlib)

然后打个build.gradle,主要就是配置一些cpu架构以及编译时候的参数。

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
   
    compileSdkVersion 28
    defaultConfig {
   
        applicationId "com.ty.compile"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
   
            cmake {
   
                abiFilters 'armeabi-v7a'
            }
        }
    }
    buildTypes {
   
    	//主要添加的部分
        debug {
   
            externalNativeBuild {
   
                cmake {
   
                    arguments '-DANDROID_PLATFORM=android-28', '-DANDROID_TOOLCHAIN=clang',
                            '-DANDROID_ARM_NEON=TRUE'
                    cFlags '-O3', '-fsigned-char', '-Wformat','-mfpu=neon', '-mfloat-abi=softfp -frtti' // full optimization, char data type is signed
                    /
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值