Android自带的人脸识别

news/2024/11/20 11:43:50/

 

 

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]);        // 调用函数对人脸画面进行处理

                                   }

                         }

                }

       }

}

6.     完整例程下载
http://download.csdn.net/source/2612476


http://www.ppmy.cn/news/836825.html

相关文章

Android 实现人脸识别

引言 基于虹软人脸识别引擎&#xff0c;在Android平台上实现人脸识别功能&#xff0c;即使在离线的情况下依旧运行&#xff0c;不被人采集个人照片的感觉&#xff0c;还是爽爽的。经过整个测试过来&#xff0c;虹软的人脸识别还是很强大的&#xff0c;人脸检测可以控制在20ms之…

Android 人脸识别

1.人脸识别测试&#xff0c;如下&#xff1a; 2.导入新项目如下&#xff1a; 3.翻译 template:模板 tracker:跟踪器 lock:锁定 purge:清除 frame:框架我同事发给我这项目&#xff0c;叫我改目录才能查看&#xff0c;他说这项目的人脸识别可以注册人脸图和特征&#xff0c;注册…

APK的数字签名检测

检测命令&#xff1a; C:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe -verify APK 文 件 路 径 -verbose –certs 当输出结果为“jar 已验证”时&#xff0c;表示签名正常 检测签名的 CN 及其他字段是否正确标识客户端程序的来源和发布者身份 如上图&#xff0c;说明…

laravel 上传后的文件如何符合安全标准

WEB应用为了满足“安全标准” - 上传文件的保存 Laravel 静态文件过滤中间件 <?phpnamespace App\Http\Middleware;use Closure;class StaticResourceInterceptor {/*** Handle an incoming request.** param \Illuminate\Http\Request $request* param \Closure $ne…

flask-apscheduler实现定时任务

秋风阁-北溪入江流 flask-apscheduler是一个支持apscheduler的flask插件&#xff0c;通过flask-apscheduler可以很方便的定义定时任务。 安装flask-apscheduler pip install flask-apschedulerflask-apscheduler组件 apscheduler库包含有组件&#xff1a; triggers&#xf…

打开百度网站过程涉及哪些协议

打开百度网站过程涉及哪些协议 打开百度网站涉及以下协议&#xff1a; HTTP&#xff1a;当你在浏览器中输入百度的网址时&#xff0c;浏览器会发送HTTP请求到百度的服务器&#xff0c;请求获取网页内容。HTTP协议定义了客户端和服务器之间的通信规则和格式。DNS&#xff1a;在…

HTML 5 会让iOS和Android开发者转行吗?

我们第一次谈论 HTML5 要改变世界大概是因为乔布斯&#xff0c;他坚持在 iOS 上不兼容 Flash&#xff0c;在 Adobe 统治多媒体开发的那个年代&#xff0c;这需要付出极大的勇气。这么多年过去了&#xff0c;虽然所有人都在谈论 HTML5&#xff0c;但是大部分人甚至都忘了它还是一…

HTML5会让iOS和安卓开发者转行吗?

HTML5中国 2015-11-25 17:33 我们第一次谈论HTML5要改变世界大概是因为乔布斯&#xff0c;他坚持在iOS上不兼容Flash&#xff0c;在Adobe统治多媒体开发的那个年代&#xff0c;这需要付出极大的勇气。这么多年过去了&#xff0c;虽然所有人都在谈论HTML5&#xff0c;但是大部…