日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android拍照识别人脸,Android 人脸识别拍照demo

發布時間:2025/3/15 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android拍照识别人脸,Android 人脸识别拍照demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、活體與照片。效果,捕獲人臉

2、活體人臉識別:https://blog.csdn.net/meixi_android/article/details/88690445

運行效果:

自定義獲取人臉view

/**

* 作者:created by meixi

* 郵箱:13164716840@163.com

* 日期:2018/8/29 15

*/

public class FaceOverlayView extends View {

private Paint mPaint;

private Paint mTextPaint;

private int mDisplayOrientation;

private int mOrientation;

private int previewWidth;

private int previewHeight;

private FaceResult[] mFaces;

private double fps;

private boolean isFront = false;

public FaceOverlayView(Context context) {

super(context);

initialize();

}

private void initialize() {

// We want a green box around the face:

DisplayMetrics metrics = getResources().getDisplayMetrics();

int stroke = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, metrics);

mPaint = new Paint();

mPaint.setAntiAlias(true);

mPaint.setDither(true);

mPaint.setColor(Color.GREEN);

mPaint.setStrokeWidth(stroke);

mPaint.setStyle(Paint.Style.STROKE);

mTextPaint = new Paint();

mTextPaint.setAntiAlias(true);

mTextPaint.setDither(true);

int size = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, metrics);

mTextPaint.setTextSize(size);

mTextPaint.setColor(Color.GREEN);

mTextPaint.setStyle(Paint.Style.FILL);

}

public void setFPS(double fps) {

this.fps = fps;

}

public void setFaces(FaceResult[] faces) {

mFaces = faces;

invalidate();

}

public void setOrientation(int orientation) {

mOrientation = orientation;

}

public void setDisplayOrientation(int displayOrientation) {

mDisplayOrientation = displayOrientation;

invalidate();

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

if (mFaces != null && mFaces.length > 0) {

float scaleX = (float) getWidth() / (float) previewWidth;

float scaleY = (float) getHeight() / (float) previewHeight;

switch (mDisplayOrientation) {

case 90:

case 270:

scaleX = (float) getWidth() / (float) previewHeight;

scaleY = (float) getHeight() / (float) previewWidth;

break;

}

canvas.save();

canvas.rotate(-mOrientation);

RectF rectF = new RectF();

for (FaceResult face : mFaces) {

PointF mid = new PointF();

face.getMidPoint(mid);

if (mid.x != 0.0f && mid.y != 0.0f) {

float eyesDis = face.eyesDistance();

rectF.set(new RectF(

(mid.x - eyesDis * 1.2f) * scaleX,

(mid.y - eyesDis * 0.65f) * scaleY,

(mid.x + eyesDis * 1.2f) * scaleX,

(mid.y + eyesDis * 1.75f) * scaleY));

if (isFront) {

float left = rectF.left;

float right = rectF.right;

rectF.left = getWidth() - right;

rectF.right = getWidth() - left;

}

canvas.drawRect(rectF, mPaint);

canvas.drawText("ID " + face.getId(), rectF.left, rectF.bottom + mTextPaint.getTextSize(), mTextPaint);

canvas.drawText("Confidence " + face.getConfidence(), rectF.left, rectF.bottom + mTextPaint.getTextSize() * 2, mTextPaint);

canvas.drawText("EyesDistance " + face.eyesDistance(), rectF.left, rectF.bottom + mTextPaint.getTextSize() * 3, mTextPaint);

}

}

canvas.restore();

}

DecimalFormat df2 = new DecimalFormat(".##");

canvas.drawText("Detected_Frame/s: " + df2.format(fps) + " @ " + previewWidth + "x" + previewHeight, mTextPaint.getTextSize(), mTextPaint.getTextSize(), mTextPaint);

}

public void setPreviewWidth(int previewWidth) {

this.previewWidth = previewWidth;

}

public void setPreviewHeight(int previewHeight) {

this.previewHeight = previewHeight;

}

public void setFront(boolean front) {

isFront = front;

}

}

附上demo下載地址:https://download.csdn.net/download/meixi_android/10796011

鏈接:https://pan.baidu.com/s/1lJG9S3BFH1GhXT9jypZh9w

密碼:在線回復QQ1085220040

總結

以上是生活随笔為你收集整理的android拍照识别人脸,Android 人脸识别拍照demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。