1.Android自带的人脸识别Android自带的人脸识别只能识别出人脸在画面中的位置,中点,眼间距,角度等基本特性,提供给拍照性质的应用使用。从基本功能中不能得出明显的特征数据

2.底层库支持external/neven/*

3.接口frameworks/base/media/java/android/media/FaceDetector.java

4.Android源码参考packages/apps/Gallery/src/com/android/camera/*

5.关键代码分析

package com.android.mydetect;

import android.app.Activity;

import android.widget.TextView;

import android.os.Bundle;

import android.media.FaceDetector;//人脸识别接口

import android.widget.ImageView;

import android.graphics.BitmapFactory;

import android.graphics.Bitmap;

import android.graphics.PointF;

import android.graphics.Matrix;

import android.util.Log;

import android.graphics.Canvas;

import android.graphics.Paint;

public class MyDetectActivity extends Activity {

private ImageView mImageView;//图片显示控件

private Bitmap mBitmap;

private float mScale = 1F;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mImageView = (ImageView) this.findViewById(R.id.image);

detect();//识别函数

}

private void handleFace(FaceDetector.Face f) {//在图片上对每张脸进行处理

PointF midPoint = new PointF();

int r = ((int) (f.eyesDistance() * mScale * 1.5));//取眼睛间距离

f.getMidPoint(midPoint);//取脸的中点

midPoint.x *= mScale;

midPoint.y *= mScale;

Canvas c = new Canvas(mBitmap);

Paint p = new Paint();

p.setAntiAlias(true);

p.setAlpha(0x80);

c.drawCircle(midPoint.x, midPoint.y, r, p)//用半透明标出人脸区域;

mImageView.setImageBitmap(mBitmap);//显示图片

}

private void detect() {

Matrix matrix = new Matrix();

FaceDetector.Face[] mFaces = new FaceDetector.Face[3];//定义最多识别三张脸

int mNumFaces = 0;

mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.baby);//取原始图

if (mBitmap == null) {

return;

}

if (mBitmap.getWidth() > 256) {

mScale = 256.0F / mBitmap.getWidth();

}

matrix.setScale(mScale, mScale);

Bitmap faceBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap

.getWidth(), mBitmap.getHeight(), matrix, true);//生成缩放后的新图

mScale = 1.0F / mScale;

if (faceBitmap != null) {

FaceDetector detector = new FaceDetector(faceBitmap.getWidth(),

faceBitmap.getHeight(), mFaces.length);//创建识别器

mNumFaces = detector.findFaces(faceBitmap, mFaces);//识别

if (mNumFaces > 0) {

for (int i = 0; i < mNumFaces; i++) {

handleFace(mFaces[i]);//调用函数对人脸画面进行处理

}

}

}

}

}

android人脸识别源代码,Android自带的人脸识别相关推荐

  1. android 网络调试 源代码,Android源代码调试环境搭建

    我们在调试Android应用程序的时候,有时候遇到一些莫名其妙的问题,因此我们需要查看Android内部是如何调用的.我们都知道Android是一个伟大的开源项目,因此debug的时候肯定是支持源代码 ...

  2. android一键拨号 源代码,android 使用意图(Intent)实现一键拨号实例

    本文打算实现具有一个一键拨号功能的 APP 1.布局文件activity_main.xml xmlns:tools="http://schemas.android.com/tools&quo ...

  3. android摇骰子源代码,Android实现微信摇骰子游戏

    过年怎么可以不玩红包娱乐一下呢,微信里的摇骰子大小和石头剪刀布就是不错的游戏方式. 使用Java的Random函数很容易实现,以骰子为例: 1.骰子摇动的动画,使用animation-list帧动画实 ...

  4. android 红包雨源代码,Android 红包雨效果自定义控件

    WX20201231-181616@2x.png 思路:利用Path绘制动画轨迹,再使用PathMeasure获取轨迹中的坐标位置实时改变view的坐标完成红包动画. 封装一个红包容器view用于管理 ...

  5. android英语字典(源代码),android英语字典(内含源码哦)

    英文词典是手机中经常使用的应用.因此,在本文将结合Android来讨论如何实现一个Android版的英文词典.实现英文词典的方法很多.在本文使用了SQLite数据库来保存英文单词信息.系统通过SQLi ...

  6. android选项菜单源代码,Android应用程序----UI界面控件(菜单menu)

    菜单是应用程序中非常重要的组成部分,能够在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面,并为程序开发人员提供了易于使用的编程接口 Android系统支持三种菜单 选项菜单(Option ...

  7. android拨号器源代码,android拨号器...

    写完这个拨号器,感慨良多.因刚入门android开发,写的过程,可谓九曲18弯,从搭建开发环境,到完成此拨号器,问题颇多 呵呵,写完这个拨号器,我对android的开发环境算是理解.入门了! ... ...

  8. android中计算机源代码,Android源代码查看途径

    作为一个android coder,多阅读android源码对提高android开发水平是很有帮助的,那么我们可以通过哪些途径查看android源码呢 1.如果你能够FQ的话可以去android官网查 ...

  9. android北京地铁源代码,Android自定义View实现地铁显示牌效果

    本文实例为大家分享了Android地铁显示牌的具体代码,供大家参考,具体内容如下 预览效果 目录 SubwayBoardView.java 代码 public class SubwayBoardVie ...

最新文章

  1. 【tensorflow】】模型优化(一)指数衰减学习率
  2. keras和tensorflow使用 keras.callbacks.EarlyStopping 提前结束训练
  3. 【蓝桥杯】历届试题 地宫取宝
  4. 科大星云诗社动态20210427
  5. MFC视图切换大全总结
  6. leader选举的源码分析-Messenger
  7. 小样本点云深度学习库_小样本学习综述报告
  8. 使用 ZFS 的 Ubuntu 20.10 安装工具默认启用 TRIM
  9. node.js中实现同步操作的3种实现方法
  10. 4.ID主键生成策略
  11. OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功
  12. 使用Mac电脑内置的屏幕共享功能,进行远程桌面管理
  13. java 纯真ip 乱码_UTF-8使用纯真IP数据库乱码问题
  14. win10 20h2 计算机属性,Win10 20H2
  15. linux设置双屏拼接_双屏、3屏拼接——A卡、N卡——Windows、Linux
  16. DS18B20单总线协议
  17. PS CS6启动“不能打开暂存盘文件”的解决方法
  18. 关于电源线 USB台灯3C认证相关介绍
  19. 【C++OJ多重继承与虚拟继承】商旅信用卡(多重继承)
  20. 基于张正友平面标定法的摄像机标定及GUI实现

热门文章

  1. https wireshark抓包——要解密出原始数据光有ssl 证书还不行,还要有浏览器内的pre-master-secret(内存里)...
  2. Delphi 多文件拖放获取路径示例
  3. HDU 6015 Colorful Tree(2017多校)
  4. leecode第八十九题(格雷编码)
  5. 低版本火狐提示HTTPS链接不安全的解决办法
  6. ubuntu下python+tornado+supervisor+nginx部署
  7. 【mongoDB实战】mongo对某个键添加索引
  8. 数据结构 树的链式存储(二叉表示法)
  9. opencv编程解决warning C4003: “max”宏的实参不足
  10. Redis学习(4)-数据类型set和zset