Adnroid 使用安卓自带的人脸识别API

news/2024/10/18 18:26:38/

缺点是精度不高,识别信息很少,只有眼睛的识别


MainActivity.java

import android.app.Activity;
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.media.FaceDetector;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.ImageView;public class MainActivity extends Activity {private final int MAX_FACES = 5;    //最大可识别的人脸数private ImageView mIv;private Bitmap mFaceBitmap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//创建一个ImageView,加载到Activity视图上mIv = new ImageView(this);setContentView(mIv, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));//要进行人脸识别的图片mFaceBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.face);mIv.setImageBitmap(mFaceBitmap);//因为这是一个耗时的操作,所以放到另一个线程中运行new Thread(new Runnable() {@Overridepublic void run() {FaceDetector.Face[] faces = new FaceDetector.Face[MAX_FACES];//格式必须为RGB_565才可以识别Bitmap bmp = mFaceBitmap.copy(Bitmap.Config.RGB_565, true);//返回识别的人脸数int faceCount = new FaceDetector(bmp.getWidth(), bmp.getHeight(), MAX_FACES).findFaces(bmp, faces);bmp.recycle();bmp = null;Log.e("tag", "识别的人脸数:" + faceCount);if (faceCount > 0) {final Bitmap bitmap = parseBitmap(faces, faceCount);//显示处理后的图片mIv.post(new Runnable() {@Overridepublic void run() {mIv.setImageBitmap(bitmap);}});}}}).start();}/*** 在人脸上画矩形*/private Bitmap parseBitmap(FaceDetector.Face[] faces, int faceCount){Bitmap bitmap = Bitmap.createBitmap(mFaceBitmap.getWidth(), mFaceBitmap.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);mPaint.setColor(Color.YELLOW);mPaint.setStrokeWidth(10);mPaint.setStyle(Paint.Style.STROKE);canvas.drawBitmap(mFaceBitmap, 0, 0, mPaint);for (int i = 0; i < faceCount; i++){//双眼的中心点PointF midPoint = new PointF();faces[i].getMidPoint(midPoint);//双眼的距离float eyeDistance = faces[i].eyesDistance();//画矩形canvas.drawRect(midPoint.x - eyeDistance, midPoint.y - eyeDistance, midPoint.x + eyeDistance, midPoint.y + eyeDistance, mPaint);}return bitmap;}
}

测试图片face.jpg



运行结果



http://www.ppmy.cn/news/836848.html

相关文章

基于Android平台实现人脸识别

前言 在深度学习出现后&#xff0c;人脸识别技术才真正有了可用性。这是因为之前的机器学习技术中&#xff0c;难以从图片中取出合适的特征值。轮廓&#xff1f;颜色&#xff1f;眼睛&#xff1f;如此多的面孔&#xff0c;且随着年纪、光线、拍摄角度、气色、表情、化妆、佩饰挂…

安卓人脸检测之FaceDetector

最近看到一个APP的头像上传时&#xff0c;如果你设置的图片里面没有人脸&#xff0c;或者有两张以及以上人脸的时候&#xff0c;会提示你图片不符合规范&#xff0c;让你重新设置&#xff0c;这样是为了确保用户的头像是人&#xff01; 然后我就在网上查看了一下资料&#xff0…

人脸识别(识别程序)

系列文章目录 人脸采集 数据训练 代码思路 一、pandas是什么&#xff1f; 示例&#xff1a;pandas 是基于NumPy 的一种工具&#xff0c;该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入代码库 import cv2获取人脸识别对象 # 获取人脸识别对象 recognizer …

基于android的人脸识别

把照片分成黑白两种颜色。。。然后扣掉白色的部分。。。 然后判断眼睛是否对称、鼻子是否是一个竖线、口是否眼色有变化 openCV javaCV cn.faceplusplus.com 清华做的人脸识别的网站 package com.njupt.facedetector1;import android.graphics.Bitmap; import android.…

Android使用Face++架构包实现人脸识别

欢迎转载&#xff0c;转载时请标明出处&#xff1a;http://blog.csdn.net/android_for_james/article/details/51016170 今天给大家带来一个通过使用Face来实现人脸识别的功能 我们先去这个Face官网看看&#xff1a;http://www.faceplusplus.com.cn 我们点开案例可以看到众多…

Android 原生的人脸识别Camera+FaceDetector示例

人脸识别google有自带api&#xff0c;Androoid 原生的人脸识别是利用相机的摄像功能和android.media.FaceDetector这个类来实现的 1、android.hardware.camera 1.1 简介 Camera 类用于设置图像捕获设置、开始/停止预览、抓拍图片和检索帧以进行视频编码 Camera的源码 1.2 人…

Android 集成Face++ 人脸识别(3.0+SDK)

写在前面 最近项目需求需要输入用户真实姓名 身份证号 再去调用人脸识别 效验是否是本人 所以就首先关注了Face(旷视)的人脸识别,听说是 正确率很高.....所以就集成了. 1.首先去官网去创建应用(其实听说创建应用是比较麻烦的) 创建好应用以后需要上传你项目的包名 2.下载Demo D…

Android集成百度人脸识别(一)基础版SDK

首先Android Studio版本&#xff1a;3.2.0 1、注册百度账号并企业认证 2、创建应用生成API Key和Secret Key 3、下载对应的SDK&#xff08;下载SDK的时候需要新建授权&#xff09; 因为下载的时候需要选择授权文件&#xff08;授权文件包含包名和签名文件的MD5&#xff09; 如…