Android自带人脸识别

news/2024/10/18 22:31:17/

前言

碰到项目需求要判断上传的图片里只能有一个人,就像到了人脸识别功能,网上查资料说需要用opencv等各种图像库,项目肯定不能接受,没想到Android很早就已经集成了人脸识别的功能,这里记录一下。

实现效果

这里写图片描述

实现接口

Android自带了一个FaceDetector人脸探测器,能够对加载到内存中的Bitmap图片做人脸识别,需要注意的是Bitmap加载的时候一定要指定使用Bitmap.Config.RGB_565的加载类型,其他的都不会有识别效果。

public class FaceDetectorImageView extends AppCompatImageView {// 人脸监测对象private FaceDetector faceDetector;// 识别到的人脸private FaceDetector.Face[] faces;// 需要识别的图片private Bitmap bitmap;// 最多需要识别的人数private int maxFaces = 10;// 真正识别到的人数private int realFaces = 0;private Paint paint;public FaceDetectorImageView(Context context) {this(context, null);}public FaceDetectorImageView(Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public FaceDetectorImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {BitmapFactory.Options options = new BitmapFactory.Options();// 一定要设置,否则无法识别人脸options.inPreferredConfig = Bitmap.Config.RGB_565;bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.faces, options);// 识别人脸数组定义faces = new FaceDetector.Face[maxFaces];faceDetector = new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), maxFaces);// 人脸识别器开始识别,速度还是比较快的,放在主线程也没什么问题realFaces = faceDetector.findFaces(bitmap, faces);// 初始化画笔工具paint = new Paint();paint.setStyle(Paint.Style.STROKE);paint.setColor(getResources().getColor(R.color.colorAccent));paint.setStrokeWidth(5);setImageBitmap(bitmap);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 在识别的每个人的眼睛位置画正方形for (int i = 0; i < realFaces; i++) {FaceDetector.Face face = faces[i];float distance = face.eyesDistance();PointF mid = new PointF();face.getMidPoint(mid);canvas.drawRect(mid.x - distance / 2,mid.y - distance / 2,mid.x + distance / 2,mid.y + distance / 2, paint);}}
}

以上就是全部的实现代码,非常简单,效果感觉还不错。


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

相关文章

Android人脸识别技术

Android人脸识别技术用到的底层库&#xff1a;android/external/neven/&#xff0c;framework 层&#xff1a;frameworks/base/media/java/android/media/FaceDetector.java。 java层接口的限制: 1、只能接受bitmap的数据。 2、只能识别出双眼睛距离不大于20像素的人脸。 3、只…

安卓人脸识别笔记

人脸识别的SDK来自虹软的人脸识别SDK&#xff0c;开源免费 虹软的官网 http://www.arcsoft.com.cn/ai/arcface.html faceDemo实现效果&#xff1a; 在项目实现过程中遇到的一些问题&#xff0c;记一下。 一、调用系统相机方法 这里使用FileProvider.getUriForFile();获取…

Android人脸识别

文章目录 Android自带的人脸识别API第三方提供大牛们的封装 Android自带的人脸识别API Android实现人脸识别可以通过google原生自带API实现&#xff0c;只能识别静态图片&#xff0c;缺点是精度不高&#xff0c;识别信息很少&#xff0c;只有眼睛的识别 栗子 在页面上放一个…

Android 人脸识别了解一下 (上)

转载请注明作者及出处&#xff1a;https://www.jianshu.com/p/ca3a12bc4911 引言 人脸识别这件事想来早已经不新鲜&#xff0c;在 Android 中的应用也并不广泛&#xff0c;所以网上相关资料乏善可陈。但是在面对特殊的应用场景时&#xff0c;人脸识别的功能还是有一定的用处的…

Android在线人脸识别登录系统

Android在线人脸识别登录系统 前言 最近需要做一个Android的在线人脸识别项目&#xff0c;需求是能够在线人脸识别登录&#xff0c;找了很多资料都是价格很高或者是离线保存样本的&#xff0c;最后选择免费的虹软人脸识别&#xff0c;经过查询很多资料&#xff0c;最终完结了…

安卓SDK——人脸识别

引 还是讯飞&#xff0c;前两篇文章 语音识别 https://blog.csdn.net/nishigesb123/article/details/90478104 语音合成 https://blog.csdn.net/nishigesb123/article/details/90478584 参考链接 官网&#xff1a;https://www.xfyun.cn/ 人脸识别说明文档&#xff1a;ht…

Android实现人脸识别(人脸检测)初识

title: Android实现人脸识别&#xff08;人脸检测&#xff09;初识 categories: Android tags:人脸识别人脸检测相机处理 date: 2020-05-21 11:35:51 介绍 本篇文章主要介绍一下移动端Android的人脸识别大致逻辑&#xff0c;后续文章会陆续放出干货&#xff0c;首先我们要明确…

人脸识别考勤系统安卓APP(手把手教学-手动滑稽)

由于百度API开始收费&#xff0c;所以这个应用暂时无法使用了&#xff0c;代码部分仍然有参考价值&#xff0c;建议大家自行更换token去验证。个人博客的下载验证码bug&#xff0c;已经fix。可以继续下载了。 更新于2022.02.13 ————————————————————我是分…