android+人脸识别流程图,Android中的图片人脸识别技术

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;

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);    }      }     } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值