前言
在这个美即真理、全民娱乐的时代,可爱有趣的人脸贴纸在各大美颜软件中得到了广泛的应用,现在已经不仅局限于相机美颜类软件中,在社交、娱乐类的app中对人脸贴纸、AR贴纸的需求也非常广泛。本文详细介绍了集成华为HMS ML kit人脸识别实现2d贴纸的集成过程,在后面的文章中我们还会介绍3D贴纸的开发过程,欢迎大家关注哦~
场景
在美颜相机、美图app以及社交类app(如抖音、微博、微信)等需要对拍照,或者对照片进行处理的app都会构建自己特有的贴纸的需求。
开发前准备
在项目级gradle里添加华为maven仓
打开AndroidStudio项目级build.gradle文件
增量添加如下maven地址:
在应用级的build.gradle里面加上SDK依赖
在AndroidManifest.xml文件里面申请相机、访问网络和存储权限
代码开发关键步骤
设置人脸检测器
这里我们通过相机回调拿到相机帧数据,并通过调用人脸检测器拿到人脸轮廓点后写入FacePointEngine供贴纸滤镜使用@Override
ML kit接口返回的人脸轮廓点情况如图所示:
介绍如何设计贴纸,首先看一下贴纸数JSON数据定义public class FaceStickerJson {
我们制作猫耳贴纸JSON文件,通过人脸索引找到眉心84号点和鼻尖85号点分别贴上耳朵和鼻子,然后把它和图片都放在assets目录下{
这里渲染贴纸纹理我们使用GLSurfaceView,使用起来比TextureView简单, 首先在onSurfaceChanged实例化贴纸滤镜,传入贴纸路径并开启相机@Override
然后在onSurfaceChanged初始化贴纸滤镜@Override
最后通过onDrawFrame把贴纸绘制到屏幕@Override
这样我们的贴纸就画到人脸上了.
Demo效果
源码