Android opencv 人脸识别(一)人脸检测

关于Android开发人脸识别,市面上有不少的sdk,不过都不是免费的,离线的更是少。市面上的商用的一般都卖钱了,定制的话很贵,虹软有离线的,还免费,识别还是挺不错的。开源的有opencv,不过识别的不是很好,sdk下载地址

这篇文章主要讲讲怎么使用opencv的人脸检测功能sdk。

下载好sdk(3.3.3),目录的样子


1.首先新建一个android项目,(android studio 3.+),需要用到ndk和cmake,没有的提前下好。

2.导入opencvLibrary, importModule->sdk->java


导入之后,添加到自己module做library。

3.samples目录下的face-detection中的src复制到app这个项目的src下(把系统生成的删除),或者只将两个类复制过来(由于c文件的方法名要和包名一致,不改的话,就要改掉cpp文件和.h文件中的方法名)

4.导入res文件

5.把jni目录下的DetectionBasedTracker_jni.cpp和DetectionBasedTracker_jni.h拷贝到cpp目录下

6.在main目录下新建jniLibs目录,在jniLibs下新建armeabi,再sdk/native/libs/armeabi-v7a目录下的libopencv_java3.so,拷贝到新建的jniLibs目下的armeabi-v7a,

6.将sdk/native/jni/include文件下的所有东西,全部考入到jniLibs目录下。

完整目录如下图


7.修改CMakeList.txt 文件

# For more information about using CMake with Android Studio, read the

# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC

# or SHARED, and provides the relative paths to its source code.

# You can define multiple libraries, and CMake builds them for you.

# Gradle automatically packages shared libraries with your APK.

add_library(
//外部引入的名称
opencv_java3

SHARED

IMPORTED)

set_target_properties(

opencv_java3

PROPERTIES IMPORTED_LOCATION

../../../../src/main/jniLibs/armeabi-v7a/libopencv_java3.so)

#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

if(CMAKE_COMPILER_IS_GNUCXX)

set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")

message(STATUS "optional:-std=c++11")

endif(CMAKE_COMPILER_IS_GNUCXX)

include_directories(src/main/jniLibs/include)

add_library( # Sets the name of the library.

detection_based_tracker

# Sets the library as a shared library.

SHARED

# Provides a relative path to your source file(s).

src/main/cpp/DetectionBasedTracker_jni.cpp )

# Searches for a specified prebuilt library and stores the path as a

# variable. Because CMake includes system libraries in the search path by

# default, you only need to specify the name of the public NDK library

# you want to add. CMake verifies that the library exists before

# completing its build.

find_library( # Sets the name of the path variable.

log-lib

# Specifies the name of the NDK library that

# you want CMake to locate.

log )

# Specifies libraries CMake should link to your target library. You

# can link multiple libraries, such as libraries you define in this

# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.

detection_based_tracker opencv_java3

# Links the target library to the log library

# included in the NDK.

${log-lib} )

不懂cmake的 可以去百度学习。

8.别忘了 在build-gradle文件中加入要支持的架构


9.启动页面加入


可以不用安装 manager.apk文件。

10.注释掉代码

运行成功,如果有问题,可以下方留言探讨




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值