代码地址如下:
http://www.demodashi.com/demo/12135.html

ViseFace

简易人脸检测库,不依赖三方库,可快速接入人脸检测功能。

  • 项目依赖:compile 'com.vise.xiaoyaoyou: viseface:1.0.0'

为什么打造该库

1、想简单快速接入人脸检测功能;

2、Google 提供的人脸检测功能部分手机无法适配;

3、第三方提供的人脸检测功能接入门槛过高;

4、依赖第三方库会增加 APK 大小。

功能介绍

1、可快速识别人脸;

2、可适配所有机型;

3、可配置最大检测人脸数;

4、可配置是否显示人脸检测框;

5、可配置当前检测人脸摄像头为前置和后置;

6、可检测到最近人脸范围的光照值,光照范围 0 - 255;

7、可检测到的最近人脸相对于屏幕宽度的比例。

效果演示

项目结构

使用介绍

1、导入人脸检测库

在工程的 build 文件中添加如下依赖:

compile 'com.vise.xiaoyaoyou:viseface:1.0.0'

2、创建相机预览布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!--相机预览界面,必须设置-->
<com.vise.face.CameraPreview
android:id="@+id/face_detector_preview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!--绘制人脸识别框,可依需配置-->
<com.vise.face.FaceRectView
android:id="@+id/face_detector_face"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!--拍照按钮,点击后进行拍照,按照需要进行添加-->
<Button
android:id="@+id/face_detector_take_photo"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginBottom="30dp"
android:layout_gravity="bottom|center_horizontal"
android:background="@android:drawable/ic_menu_camera"
/>
</FrameLayout>

注意:最外层布局必须是 FrameLayout;如果代码中配置需要绘制人脸检测框,那么布局必须添加 FaceRectView

3、创建人脸检测实现对象

IFaceDetector mFaceDetector = new NormalFaceDetector();

4、创建权限检查监听

ICameraCheckListener mCameraCheckListener = new ICameraCheckListener() {
@Override
public void checkPermission(boolean isAllow) {
//权限是否允许
ViseLog.i("checkPermission" + isAllow);
} @Override
public void checkPixels(long pixels, boolean isSupport) {
//手机像素是否满足要求
ViseLog.i("checkPixels" + pixels);
}
};

5、创建检测数据监听

IDataListener mDataListener = new IDataListener() {
@Override
public void onDetectorData(DetectorData detectorData) {
//回调识别到的数据
ViseLog.i("识别数据:" + detectorData);
}
};

6、设置相关配置,创建人脸检测代理

该库的核心思想就是快速接入人脸检测功能,所以该库的功能都是通过 DetectorProxy 代理类来实现,使用简单明了。具体使用场景如下:

//创建代理类,必须传入相机预览界面
DetectorProxy mDetectorProxy = new DetectorProxy.Builder(mFace_detector_preview)
//设置权限检查监听
.setCheckListener(mCameraCheckListener)
//设置人脸检测实现
.setFaceDetector(mFaceDetector)
//设置检测数据回调监听
.setDataListener(mDataListener)
//设置绘制人脸识别框界面
.setFaceRectView(mFace_detector_face)
//设置是否绘制人脸检测框
.setDrawFaceRect(true)
//设置预览相机的相机ID
.setCameraId(Camera.CameraInfo.CAMERA_FACING_BACK)
//设置可检测的最大人脸数
.setMaxFacesCount(5)
//设置人脸识别框是否为完整矩形
.setFaceIsRect(false)
//设置人脸识别框的RGB颜色
.setFaceRectColor(Color.rgb(255, 203, 15))
//创建代理类
.build();

7、开启人脸检测

if (mDetectorProxy != null) {
mDetectorProxy.detector();
}

8、释放资源

if (mDetectorProxy != null) {
mDetectorProxy.release();
}

基于Android平台的简易人脸检测库

代码地址如下:
http://www.demodashi.com/demo/12135.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

基于Android平台的简易人脸检测库的更多相关文章

  1. 基于Android 平台简易即时通讯的研究与设计[转]

    摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...

  2. 如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)

    前言 本次编写所用的库为于仕祺老师免费提供的人脸检测库.真心好用,识别率和识别速度完全不是Opencv自带的程序能够比拟的.将其配合Opencv的EigenFace算法,基本上可以形成一个小型的毕业设 ...

  3. 基于android平台的斗地主AI

    本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能. (一)玩法解析: (1)发牌和叫牌:一副扑克54张,先为每个人 ...

  4. 基于Android平台的会议室管理系统具体设计说明书

    会议室管理系统具体设计说明书 第一部分  引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...

  5. 【计算机视觉】如何使用于仕琪老师的libfacedetect人脸检测库

    前言 最近又开始进行人脸检测方向的内容,看到于仕琪老师的多角度检测想试一下,还不清楚原理,先测试效果如何. libfacedetect人脸检测库是深圳大学于仕琪老师发布的开源库,与opencv自带的人 ...

  6. 基于opencv3.0下的人脸检测和检测部分的高斯模糊处理

    如题 这里将任务分解为三大部分: 1.录播放视频 2.人脸检测 3.部分高斯模糊 其中重点放在人脸检测和部分高斯模糊上 1.录播放视频(以opencv中的VideoCapture类进行实现) 首先罗列 ...

  7. 基于OpenCV读取摄像头进行人脸检测和人脸识别

    前段时间使用OpenCV的库函数实现了人脸检测和人脸识别,笔者的实验环境为VS2010+OpenCV2.4.4,opencv的环境配置网上有很多,不再赘述.检测的代码网上很多,记不清楚从哪儿copy的 ...

  8. 基于ANDROID平台,U3D对蓝牙手柄键值的获取

    对于ANDROID平台,物理蓝牙手柄已被封装,上层应用不可见,也就是说对于上层应用,不区分蓝牙手柄还是其它手柄: 完成蓝牙手柄和ANDROID手机的蓝牙连接后,即可以UNITY3D中获取其键值: 在U ...

  9. spring boot2 基于百度云apiface实现人脸检测与认证2

    接上一篇,上篇只实现了人脸的认证,接下来实现人脸的检测. 原理介绍: 把摄像头抓拍的图像上传到服务器,服务器把图像上传到百度云,百度云返回识别出的人脸的数量和位置,前端根据服务端的返回,在图像中画出人 ...

随机推荐

  1. (九)经典_STM32_ADC多通道采样的例子

    STM32 ADC多通道转换描述:用ADC连续采集11路模拟信号,并由DMA传输到内存.ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ.在每次转换结束后,由DMA循环将转换的数据传输到 ...

  2. C++ DLL导出类 知识大全

    在公司使用C++ 做开发,公司的大拿搭了一个C++的跨平台开发框架.在C++开发领域我还是个新手,有很多知识要学,比如Dll库的开发. 参考了很多这方面的资料,对DLL有一个基本全面的了解.有一个问题 ...

  3. Selenium2+python自动化17-JS处理滚动条【转载】

    前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...

  4. string那些事之replace

    /* 用法一: 用str替换指定字符串从起始位置pos开始 长度为为len的字符串 string &replace(size_t pos, size_t len, const string&a ...

  5. 状压DP【p1896】[SCOI2005]互不侵犯

    Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...

  6. 洛谷——P1403 [AHOI2005]约数研究

    P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工 ...

  7. js timestamp 转换 date 和 将秒数整理为时分秒格式

    // 获得的后台json 时间格式转化 例如:1520305366000  转化为XXXX-XX-XX类似这种 function timeStamp2String(time){ var datetim ...

  8. [LOJ6277]数列分块入门 1

    题目大意: 给你一个长度为$n(n\leq 50000)$的序列$A$,支持进行以下两种操作: 1.将区间$[l,r]$中所有数加上$c$: 2.询问$A_r$的值.思路: 分块. 对于整块的数据打标 ...

  9. 【spring data jpa】【mybatis】通过反射实现 更新/保存 实体的任意字段的操作

    代码如下: //代码示例:例如保存时,传入下面两个字段 String filed;String content; //User代表要更新的实体,user即本对象 //filed代表要更改的字段,例如u ...

  10. 150725培训心得(vector)

    vector(不定长数组) 在C语言中,数组定义必须给定长度.可是有的时候太浪费空间,能够利用STL中vector函数来解决问题. 1 基本操作 (1)头文件#include<vector> ...