android 人脸识别demo,Android Camera 内置人脸识别的Demo
CameraFace
Android Camera 内置人脸识别的Demo
通过Android源生API支持的人脸识别FaceDetection,获取到脸部矩形坐标,左右眼坐标,嘴坐标通过View动态实摄像头实时装饰功能
主要方法
//人脸识别设置监听
mCamera.setFaceDetectionListener(mFaceDetectionListener);
//人脸识别监听启动
mCamera.startFaceDetection();
class FaceDetectionListener implements Camera.FaceDetectionListener{
@Override
public void onFaceDetection(Camera.Face[] faces, Camera camera) {
Message m = mHandler.obtainMessage();
m.what = MainActivity.AC_DRAW;
if (null == faces || faces.length == 0) {
m.obj = null;
Log.d("face", "onFaceDetection : There is no face found.");
} else {
Log.d("face", "onFaceDetection : face found.");
m.obj = faces;
for (int i = 0; i < faces.length; i++) {
Camera.Face face = faces[i];
if (face == null)return;
Rect rect = face.rect;
Log.i("face","face.score="+face.score);
Log.i("face","rect.left="+rect.left+"\nrect.top="+rect.top+"\nrect.right="+rect.right+"\nrect.bottom="+rect.bottom);
Log.i("face","id="+face.id+" \nface.leftEye.x="+face.leftEye.x+" \nface.leftEye.y"+face.leftEye.y+" \nface.mouth.x="+face.mouth.x+" \nface.mouth.y="+face.mouth.y);
}
}
m.sendToTarget();
}
}
//faces 识别出的人脸特征数据
public static class Face {
public int id;//对应id
public Point leftEye;//左眼
public Point mouth;//嘴
public Rect rect;//脸部坐标
public Point rightEye;//右眼
public int score;//识别分数
}
//绘制对应的装饰图片
protected void onDraw(Canvas canvas) {
if (mFaces == null || mFaces.length < 1) {
return;
}
boolean isMirror = false;
// int Id =CameraInterface.getInstance().getCameraId();
// if(Id == CameraInfo.CAMERA_FACING_BACK){
// isMirror = false; //后置Camera无需mirror
// }else if(Id == CameraInfo.CAMERA_FACING_FRONT){
isMirror = true; //前置Camera需要mirror
// }
// Util.prepareMatrix(mMatrix, isMirror, 90, mCameraW, mCameraH);
Util.prepareMatrix(mMatrix, isMirror, 90, getWidth(), getHeight());
canvas.save();
mMatrix.postRotate(0); //Matrix.postRotate默认是顺时针
canvas.rotate(-0); //Canvas.rotate()默认是逆时针
if (mFaces == null){
mFaceIndicatorDraw.draw(canvas);
mLeftEyeDraw.draw(canvas);
mRightEyeDraw.draw(canvas);
mMouthDraw.draw(canvas);
}else {
for (int i = 0; i < mFaces.length; i++) {
Camera.Face face = mFaces[i];
mRect.set(face.rect);
mMatrix.mapRect(mRect);//计算出在父布局的真是坐标
//识别的Rect 系数,使装饰图片根据人脸与摄像头的距离放大或者缩小
float dx = mRect.bottom - mRect.top;
if (isHeadShow){
Log.i(TAG, "FaceView dx=" +dx );
float h = dx * 0.4f;
mHeadDraw.setBounds(Math.round(mRect.left), Math.round(mRect.top - h),
Math.round(mRect.right), Math.round(mRect.bottom - h));
mHeadDraw.draw(canvas);
}
if (isFaceIndicatorShow){
mFaceIndicatorDraw.setBounds(Math.round(mRect.left), Math.round(mRect.top),
Math.round(mRect.right), Math.round(mRect.bottom));
mFaceIndicatorDraw.draw(canvas);
}
if (isLeftEyeShow){
float[] leftEye = {face.leftEye.x, face.leftEye.y};
mMatrix.mapPoints(leftEye);//计算出在父布局的真是坐标
float h = dx * 0.1f;
float w = dx * 0.15f;
mLeftEyeDraw.setBounds(Math.round(leftEye[0]-w), Math.round(leftEye[1]-h),
Math.round(leftEye[0]+w), Math.round(leftEye[1]+h));
mLeftEyeDraw.draw(canvas);
}
if (isRightEyeShow){
float[] rightEye = {face.rightEye.x, face.rightEye.y};
float w = dx * 0.15f;
float h = dx * 0.1f;
mMatrix.mapPoints(rightEye);//计算出在父布局的真是坐标
mRightEyeDraw.setBounds(Math.round(rightEye[0]-w), Math.round(rightEye[1]-h),
Math.round(rightEye[0]+w), Math.round(rightEye[1]+h));
mRightEyeDraw.draw(canvas);
}
if (isMouthShow){
float[] mouthP = {face.mouth.x, face.mouth.y};
mMatrix.mapPoints(mouthP);//计算出在父布局的真是坐标
float w = dx * 0.15f;
float h = dx * 0.2f;
mMouthDraw.setBounds(Math.round(mouthP[0]-w), Math.round(mouthP[1]-h),
Math.round(mouthP[0]+w), Math.round(mouthP[1]));
mMouthDraw.draw(canvas);
}
}
}
canvas.restore();
super.onDraw(canvas);
}
android 人脸识别demo,Android Camera 内置人脸识别的Demo相关推荐
- 网页实现人脸识别PHP,奇思妙想-用HTML5进行人脸识别
今天发现一篇文章写的很有趣,叫你如何使用HTML5进行人脸识别.在网页内进行人脸识别,很好很强大! "现代Web"不断发展出不少有趣的API,但你并不会在大多数项目中使用到所有的内 ...
- android 表情识别,基于Android平台的人脸表情识别系统的设计与实现
摘要: 随着目前移动设备硬件技术的不断发展,其性能与PC的差距越来越小,这使得在嵌入式平台上进行图像处理成为了可能.目前使用最广泛的是基于Android系统的嵌入式平台,与之相关的图像类应用需求也渐渐 ...
- face.evoLVe:高性能人脸识别开源库,内附高能模型
点击我爱计算机视觉标星,更快获取CVML新技术 目前人脸识别开源项目众多,但真正能方便快捷拿来就用.性能指标业界领先的开源库并不多,而最近刚刚开源的face.evoLVe绝对是不容忽视的力量. 项目地 ...
- 虹软人脸识别SDK接入Milvus实现海量人脸快速检索
虹软人脸识别SDK接入Milvus实现海量人脸快速检索 背景 虹软SDK及Milvus简介 开发环境 虹软人脸识别SDK使用简介 Milvus环境搭建 快速检索实现 人脸识别流程简介 快速检索 虹软S ...
- 【人脸识别】基于dlib库实现人脸特征值提取
一.Dlib库介绍与安装 1. Dlib库简介 Dlib库是一个机器学习的开源库,包含了机器学习的很多算法,使用起来很方便,直接包含头文件即可,并且不依赖于其他库(自带图像编解码库源码).Dlib可以 ...
- java人脸识别_自从加了PC人脸识别登录功能,网站立马显得高大上
之前不是做了个开源项目嘛,在做完GitHub登录后,想着再显得有逼格一点,说要再加个人脸识别登录,就我这佛系的开发进度,过了一周总算是抽时间安排上了. 源码在文末 其实最近对写文章有点小抵触,写的东西 ...
- 人脸识别代码_10行代码实现人脸识别
什么是人脸识别 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术 ...
- Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%
Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...
- 人脸识别接口_DS-K5603-Z 海康威视人员通道人脸识别组件 1万人脸库 10.1英寸LCD触摸显示屏_DS-K5603-Z_DS-K5603-Z...
DS-K5603-Z 海康威视人员通道人脸识别组件 英寸LCD触摸显示屏 支持10000人脸库 支持人脸识别.刷卡或相互组合的识别方式,1:1比对时间≤1S/人,1:N比对时间≤人 DS-K5603- ...
最新文章
- 2021-07-01带Left Join的SQL语句的执行顺序
- shell操作典型案例--FTP操作
- 《开源安全运维平台OSSIM最佳实践》实验环境下载
- 文件压缩和文件打包命令
- C++中的4个类型转换关键字
- Java高级特性 第10节 IDEA和Eclipse整合JUnit测试框架
- HANA report creation implementation go through
- [转载] boost python numpy_boost.python 与 boost.numpy安装的一些注意事项
- 动画图解:十大经典排序算法动画与解析,看我就够了(配代码完全版)
- KEIL MDK的安装(包含HAL库)
- Java Map是否有序?
- win10计算机管理删除卷,win10系统删除卷或驱动器分区的方法
- min-height是什么意思?
- Classic Shell 后继者之 Classic Start
- Java实现Zoho Mail 发送邮件,使用hutool工具类。
- C++图书管理查询系统
- ADI Blackfin DSP处理器-BF533的开发详解62:DSP控制ADXL345三轴加速度传感器-贪食蛇游戏(含源码)
- 西游记中孙悟空的家业历史
- 【万字长文】——作者底层逻辑辨析【自组织场景宣言】,拉开未来序幕!
- 30句感悟人生的格言名言