Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 578|回复: 0

[实例教程]Android自带的人脸识别

[复制链接]

该用户从未签到

发表于 2011-10-22 14:15:29 | 显示全部楼层 |阅读模式
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);        // 调用函数对人脸画面进行处理

                                   }

                         }

                }

       }

}

mydetect.tgz.tar (388.76 KB, 下载次数: 20)
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:15:36 | 显示全部楼层

Re:[实例教程]Android自带的人脸识

经典,谢谢分享了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:15:42 | 显示全部楼层

Re:[实例教程]Android自带的人脸识

谢谢~~分享。应该会很有用的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-22 19:49 , Processed in 0.313085 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表