android带人脸识别码,Android自带的人脸识别
1.Android自帶的人臉識別Android自帶的人臉識別只能識別出人臉在畫面中的位置,中點,眼間距,角度等基本特性,提供給拍照性質(zhì)的應用使用。從基本功能中不能得出明顯的特征數(shù)據(jù)
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();//識別函數(shù)
}
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)//用半透明標出人臉區(qū)域;
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);//創(chuàng)建識別器
mNumFaces = detector.findFaces(faceBitmap, mFaces);//識別
if (mNumFaces > 0) {
for (int i = 0; i < mNumFaces; i++) {
handleFace(mFaces[i]);//調(diào)用函數(shù)對人臉畫面進行處理
}
}
}
}
}
總結(jié)
以上是生活随笔為你收集整理的android带人脸识别码,Android自带的人脸识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自然语言交流系统 phxnet团队 创新
- 下一篇: SpringBoot的配置项