Android中的图片人脸识别技术
来源:互联网 发布:php的进程 编辑:程序博客网 时间:2024/06/10 00:27
package com.zyq.activity;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Paint.Style;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Paint.Style;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class PersonFaceActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
Log.i("huxun", "test ok");
}
private class MyView extends View{
private int imgWidth,imgHeight;
private int numberFace=5; //最大检测的人脸数
private FaceDetector faceDetector; //人脸识别类的实例
private FaceDetector.Face[] faces; //存储人脸的数组变量
float eyeDistance; //两眼间的间距
int numberOfFaceDetected; //实际检测的人脸的数量
Bitmap bitmap;
public MyView(Context context) {
super(context);
//创建位图工厂选项对象
BitmapFactory.Options bitmapFactoryOption=new BitmapFactory.Options();
//设置位图最佳配置
bitmapFactoryOption.inPreferredConfig=Bitmap.Config.RGB_565;
//将读到的图片按选项对象进行解码
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.test,bitmapFactoryOption);
//获取图片宽度
imgWidth=bitmap.getWidth();
//获取图片高度
imgHeight=bitmap.getHeight();
faces=new FaceDetector.Face[numberFace];
//创建人脸解码对象
faceDetector=new FaceDetector(imgWidth, imgHeight, numberFace);
//到图片中搜索人脸
numberOfFaceDetected=faceDetector.findFaces(bitmap, faces);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap, 0,0,null);
//构建画笔
Paint paint=new Paint();
//设置画笔颜色
paint.setColor(Color.YELLOW);
//画线条
paint.setStyle(Style.STROKE);
//设置线条的宽度
paint.setStrokeWidth(3);
for (int i = 0; i < numberOfFaceDetected; i++) {
Face face=faces[i];
PointF pointF=new PointF();
//获得人脸中点位置
face.getMidPoint(pointF);
//获得两眼间距
eyeDistance=face.eyesDistance();
//画图
canvas.drawRect((int)(pointF.x-eyeDistance), (int)(pointF.y-eyeDistance),(int)(pointF.x+eyeDistance),(int)(pointF.y+eyeDistance),paint);
}
}
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
Log.i("huxun", "test ok");
}
private class MyView extends View{
private int imgWidth,imgHeight;
private int numberFace=5; //最大检测的人脸数
private FaceDetector faceDetector; //人脸识别类的实例
private FaceDetector.Face[] faces; //存储人脸的数组变量
float eyeDistance; //两眼间的间距
int numberOfFaceDetected; //实际检测的人脸的数量
Bitmap bitmap;
public MyView(Context context) {
super(context);
//创建位图工厂选项对象
BitmapFactory.Options bitmapFactoryOption=new BitmapFactory.Options();
//设置位图最佳配置
bitmapFactoryOption.inPreferredConfig=Bitmap.Config.RGB_565;
//将读到的图片按选项对象进行解码
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.test,bitmapFactoryOption);
//获取图片宽度
imgWidth=bitmap.getWidth();
//获取图片高度
imgHeight=bitmap.getHeight();
faces=new FaceDetector.Face[numberFace];
//创建人脸解码对象
faceDetector=new FaceDetector(imgWidth, imgHeight, numberFace);
//到图片中搜索人脸
numberOfFaceDetected=faceDetector.findFaces(bitmap, faces);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bitmap, 0,0,null);
//构建画笔
Paint paint=new Paint();
//设置画笔颜色
paint.setColor(Color.YELLOW);
//画线条
paint.setStyle(Style.STROKE);
//设置线条的宽度
paint.setStrokeWidth(3);
for (int i = 0; i < numberOfFaceDetected; i++) {
Face face=faces[i];
PointF pointF=new PointF();
//获得人脸中点位置
face.getMidPoint(pointF);
//获得两眼间距
eyeDistance=face.eyesDistance();
//画图
canvas.drawRect((int)(pointF.x-eyeDistance), (int)(pointF.y-eyeDistance),(int)(pointF.x+eyeDistance),(int)(pointF.y+eyeDistance),paint);
}
}
}
}
0 0
- Android中的图片人脸识别技术
- Android人脸识别技术
- Android人脸识别技术
- android人脸识别技术浅析
- Android 图片人脸识别剪切
- Android中人脸识别技术
- Android中人脸识别技术
- Android中人脸识别技术
- 人脸识别技术
- 人脸识别技术
- 人脸识别技术
- [图文]解读《碟中谍4》中的人脸识别技术
- IOS_使用coreImage实现图片中的人脸识别
- 图片识别之人脸识别API
- 识别图片中的文字
- Opencv3.3 人脸识别 图片拼接 Android
- Android端OCR技术在身份证识别中的应用
- 论语音识别技术API在Android中的应用
- unity3d中网格导入文件的两种类型
- Netstat命令详解 netstat命令怎样使用
- 高并发下的一些优化经验
- Eclipse使用Maven创建Web时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webap
- 网络编程
- Android中的图片人脸识别技术
- XMl中DTD校验案例
- VIM快捷键键盘图--Linux下开发使用
- IOS解析XML文件
- UITableView
- IOS UI TableVIew(初级)
- 基于Eclipse开发OSGI的简单实例
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- strFieldByName