基于Android平台的简易人脸检测库
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平台的简易人脸检测库
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
基于Android平台的简易人脸检测库的更多相关文章
- 基于Android 平台简易即时通讯的研究与设计[转]
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
- 如何快糙好猛的使用Shiqi.Yu老师的公开人脸检测库(附源码)
前言 本次编写所用的库为于仕祺老师免费提供的人脸检测库.真心好用,识别率和识别速度完全不是Opencv自带的程序能够比拟的.将其配合Opencv的EigenFace算法,基本上可以形成一个小型的毕业设 ...
- 基于android平台的斗地主AI
本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能. (一)玩法解析: (1)发牌和叫牌:一副扑克54张,先为每个人 ...
- 基于Android平台的会议室管理系统具体设计说明书
会议室管理系统具体设计说明书 第一部分 引言 1.编写目的 本说明对会议室管理系统项目的各模块.页面.脚本分别进行了实现层面上的要求和说明. 软件开发小组的产品实现成员应该阅读和參考本说明进行代码的 ...
- 【计算机视觉】如何使用于仕琪老师的libfacedetect人脸检测库
前言 最近又开始进行人脸检测方向的内容,看到于仕琪老师的多角度检测想试一下,还不清楚原理,先测试效果如何. libfacedetect人脸检测库是深圳大学于仕琪老师发布的开源库,与opencv自带的人 ...
- 基于opencv3.0下的人脸检测和检测部分的高斯模糊处理
如题 这里将任务分解为三大部分: 1.录播放视频 2.人脸检测 3.部分高斯模糊 其中重点放在人脸检测和部分高斯模糊上 1.录播放视频(以opencv中的VideoCapture类进行实现) 首先罗列 ...
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
前段时间使用OpenCV的库函数实现了人脸检测和人脸识别,笔者的实验环境为VS2010+OpenCV2.4.4,opencv的环境配置网上有很多,不再赘述.检测的代码网上很多,记不清楚从哪儿copy的 ...
- 基于ANDROID平台,U3D对蓝牙手柄键值的获取
对于ANDROID平台,物理蓝牙手柄已被封装,上层应用不可见,也就是说对于上层应用,不区分蓝牙手柄还是其它手柄: 完成蓝牙手柄和ANDROID手机的蓝牙连接后,即可以UNITY3D中获取其键值: 在U ...
- spring boot2 基于百度云apiface实现人脸检测与认证2
接上一篇,上篇只实现了人脸的认证,接下来实现人脸的检测. 原理介绍: 把摄像头抓拍的图像上传到服务器,服务器把图像上传到百度云,百度云返回识别出的人脸的数量和位置,前端根据服务端的返回,在图像中画出人 ...
随机推荐
- Use NSArray to specify otherButtonTitles?
http://stackoverflow.com/questions/1602214/use-nsarray-to-specify-otherbuttontitles UIAlertSheet's c ...
- 使用 JavaScript 将网站后台的数据变化实时更新到前端-【知乎总结】
问: 难道只能设置定时器每隔一秒通过 Ajax 向后台请求数据来实现吗? 答: 1. nodejs的 http://socket.io 支持上述 李宏训 所说的三种方式,另外还支持 Flash Soc ...
- HDU 6270 Marriage (2017 CCPC 杭州赛区 G题,生成函数 + 容斥 + 分治NTT)
题目链接 2017 CCPC Hangzhou Problem G 题意描述很清晰. 考虑每个家庭有且仅有$k$对近亲的方案数: $C(a, k) * C(b, k) * k!$ 那么如果在第$1$ ...
- Python的功能模块[0] -> wmi -> 获取 Windows 内部信息
wmi模块 / wmi Module WMI (Windows Management Instrumentation) 模块可用于获取 Windows 内部信息.该模块需要 win32com 的支持, ...
- Codeforces 1010D Mars rover
题目大意:对于一个不完全二分图,根节点为1,叶节点值为0或1,非叶节点包含一个操作(and,or,xor,not),求改变各个叶节点的值时(即0改为1,1改为0),根节点的值是多少 解法:遍历图求各节 ...
- 使用after伪类,配合IE的zoom或者overflow清除浮动
用after伪类实现,兼容多种浏览器:.clearfix:after {content:"."; display:block; height:0; clear:both; visi ...
- jcl sort comp3 to 表示型
Lets say your packed data is at 10th column and is of length 6, S9(4)V99 You could try the following ...
- IO 输出 PrintStream和PrintWriter
PrintStream和PrintWriter的autoflushing机制有点不同,前者在输出byte数组.调用println方法.输出换行符或者byte值10(即\n)时自动调用flush方法,后 ...
- [BZOJ2095]Bridges
最大值最小,是二分 转化为判定问题:给定一个混合图,问是否存在欧拉回路 首先,有向图存在欧拉回路的充要条件是每个点的入度等于出度,现在我们有一个混合图,我们要做的就是给其中的无向边定向,使得它变成有向 ...
- 各种计算机编码与base64
什么是base64,base64与Hex编码,ASCII编码,UTF-8编码都是什么关系 1 计算机开始之初,二进制 计算机所用的语言是什么呢?这个语言非常简单,只有0和1两种表示.0代表否,1代表是 ...