欢迎光临散文网 会员登陆 & 注册

全网首发:Android Camera2 集成人脸识别算法

2023-07-04 23:25 作者:小驰成长圈  | 我要投稿

这可能是全网唯一一篇介绍Android Camera2接口集成人脸算法的文章了~

写在前面:

说起人脸识别,相信大家都不会感到陌生,在我们平时的工作生活中,人脸打卡、刷脸支付等等已经是应用的非常广泛了,人脸识别也给我们的生活带来了极大的便利。

这篇文章的目的是让大家了解熟悉Android平台上人脸算法集成的基本流程(针对应用层的集成)。相信读完这篇文章后,大家会觉的,原来集成人脸识别算法也是so easy。

这篇文章将针对下面几点展开介绍:

一、Android平台人脸识别程图

二、ArcSoft人脸识别算法sdk下载

三、Camera2 API 集成 ArcSoft人脸识别算法

一、Android平台人脸识别流程图

人脸识别流程图基本如下图所示,用一句话来说就是获取camera数据,送到算法中进行识别,最后显示识别结果。

二、ArcSoft人脸识别算法sdk下载

人脸识别算法很多,如果是高通平台,高通也是有一套人脸识别算法的。我这里选择的是arcsoft的识别算法,这个目前是免费的,而且相对来说算法效果也还不错。

接下来我们看下如何去获取arcsoft的人脸识别sdk。

1)登录arcsoft官网ai.arcsoft.com.cn/,选择进入开发者中心

2)注册并登录开发者中心后,在开发者中心界面,我们选择“新建应用”,然后勾选人脸识别功能。

如下图所示,我创建的应用是“CameraDemo”。这个界面的APP_ID 和SDK_KEY我们后面代码里面需要用到。这个界面还有个“下载SDK”的按钮,点击就可以下载我们需要的sdk demo。

3)Demo下载下来后,我们先跑下arcsoft官方Demo看下效果。

我们选择人脸检测属性(视频)。 如下图所示,效果还不错,我们可以看到识别出来的信息里面包含了性别、年龄、是否是真人这些基本信息。

三、Camera2 API 集成

通过上面的2步,大家有没觉的集成人脸识别还是蛮简单的。介绍完了官方的demo,那接下来我们看下采用Android Camera2 的api,如何去集成arcsoft的人脸识别算法呢。

1、如下面代码块所示,arcsoft 官方demo采用的是Camera1的api接口,设置的预览数据的回调,回调的直接就是nv21的byte[]数据,然后再把byte[]数据送进去算法处理。

2、接下来我们要介绍的是使用Camera2接口,如何集成arcsoft的人脸识别算法。

我自己创建了个应用工程,demo源码地址也在文末会给出。 我们先来看下我自己写的demo效果图:

下面来讲解下代码实现的主要步骤: (不熟悉Camera2接口的同学,建议先找一篇关于Camera2 API的文章先了解下,关于Camera2,我自己前面也写过算是比较详细的文章介绍,也欢迎大家阅读)

i、初始化imageReader

ii、创建session的时候,把imagerReader的surface也add进去。这样我们就能拿到实时的视频流。

iii、在imageReader的实时流回调里面,我们需要把接收到的YUV_420_888的数据先转换成nv21格式,然后再送进arcsoft的人脸检测算法中进行处理。 Camera1 接口上,设置预览数据回调后,回调的直接就是nv21格式的数据,相对来说会比Camera2上的处理会简单很多。

不过Android 目前已经不再对Camera旧的架构进行维护,而且目前主流的手机采用的基本上也都是Camera2的接口。所以我们还是非常有必要熟悉掌握Camera2的各种使用。

Demo 代码地址:pan.baidu.com/s/1z44mAtkJ…

这篇文件介绍的,是针对应用层上的人脸算法集成。现在很多手机厂商,人脸算法有一部分是在hal层完成的。比如美颜算法这些,直接就是在hal层完成的了,这样处理效率会更高。针对hal层的算法集成,感兴趣同学的欢迎留言,后面的文章我会进行更新介绍。

*本人从事Android Camera相关开发已有5年,

*目前在深圳上班,

*欢迎关注我的微信公众号: 小驰笔记

*希望和更多的小伙伴一起交流学习~

---- 2021.04.17 深圳 16:21


全网首发:Android Camera2 集成人脸识别算法的评论 (共 条)

分享到微博请遵守国家法律