android动态贴纸实现原理,人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现...
原标题:人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现
泛娱乐行业在互联网领域中发展趋势逐渐增强,而直播、短视频、视频社交等作为头部产品受到了众多用户的关注和喜爱。为了能够更好的满足用户体验,众多APP纷纷开始接入人脸动态贴纸sdk, 以新颖有趣的人脸动态贴纸功能为引,增强用户对平台的活跃度和黏性程度,从而带动平台自身的发展。
说白了,动态贴纸其实就是静态贴纸的循环播放,现在要想实现人脸动态贴纸功能的话,其算法可以大概分为两个部分。
人脸检测和关键点识别
既然是人像贴纸,那么肯定要涉及到人脸检测和关键点识别的内容,因为只有在有人脸的情况下获取到必须的关键点,这样才能准确的“打上”贴纸。像一些专门做贴纸的APP,其中的贴纸通常都是经过数十几个人脸特征点的模板配置,这样一来才可以有效的捕捉用户的面部,实现最终的动态贴纸效果。
人脸动态贴纸sdk
怎样将贴纸进行融合
在开发人脸动态贴纸sdk时,拥有了人脸特征点之后,接下来就是考虑怎样将贴纸融合到适当的未知,可以简单概括为以下几点:
1.计算基准点
通常取人脸中的5个特征点,经过计算后得到三个关键点,这三个关键点在人脸中是变化比较小的,但是又可以同时覆盖整个人脸面部区域,所以具有整张人脸的代表性。
2.构建基准点
将图像或视频中标定出三个人脸关键点的位置,并将其位置信息进行记录。
3.构建贴纸模板
将想要使用的贴纸放置到图像或视频中在前端展现出来的位置,然后保存两个贴纸模板,这样就可以制作成为贴纸模板。
人脸动态贴纸sdk
3.贴图
经过前面的几步流程之后,将用户照片像素映射到贴纸模板中,然后根据贴纸模板像素的透明度进行alpha混合,从而实现最终的人脸动态贴纸功能。
最后给大家简单分享一部分实现人脸动态贴纸功能的代码,仅供参考使用。
#include"Trent_Sticker.h"
#include"Trent.h"
void GetTexTransMatrix(float x1, float y1, float x2, float y2, float x3, float y3,float tx1, float ty1, float tx2, float ty2, float tx3, float ty3, float*texMatrix)
{
float detA;
detA = tx1*ty2 + tx2*ty3 + tx3*ty1 - tx3*ty2 - tx1*ty3 - tx2*ty1;
float A11, A12, A13, A21, A22, A23, A31, A32, A33;
A11 = ty2 - ty3;
A21 = -(ty1 - ty3);
A31 = ty1 - ty2;
A12 = -(tx2 - tx3);
A22 = tx1 - tx3;
A32 = -(tx1 - tx2);
A13 = tx2*ty3 - tx3*ty2;
A23 = -(tx1*ty3 - tx3*ty1);
A33 = tx1*ty2 - tx2*ty1;
texMatrix[0] = (x1*A11 + x2*A21 + x3*A31) / detA;
texMatrix[1] = (x1*A12 + x2*A22 + x3*A32) / detA;
texMatrix[2] = (x1*A13 + x2*A23 + x3*A33) / detA;
texMatrix[3] = (y1*A11 + y2*A21 + y3*A31) / detA;
texMatrix[4] = (y1*A12 + y2*A22 + y3*A32) / detA;
texMatrix[5] = (y1*A13 + y2*A23 + y3*A33) / detA;
}
人脸动态贴纸sdk
以上就是关于人脸动态贴纸sdk的算法详解,其实对于具备一定技术实力的人来讲,动态贴纸即循环播放的静态贴纸,但是对于不具备技术实力的人来讲,实现起来是非常困难的,建议找专业的人脸动态贴纸sdk服务商。毕竟对于开发者和运营者来讲,接入三方sdk是一件既省时省力还省钱的事情,何乐而不为?
声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。返回搜狐,查看更多
责任编辑:
android动态贴纸实现原理,人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现...相关推荐
- linux如何确定共享库路径,摘录Linux下动态共享库加载时的搜索路径详解
对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似"error while loading shared libraries"这样的错误,这是典型的因为需要的动态库不在动态链接器 ...
- vue动态设置文字布局方式_详解Vue动态添加模板的几种方法
动态添加模板需要收集原始数据的页面,这个时候我们需要很多原始数据收集模板,下面给大家详解Vue 动态添加模板的几种方法,希望对你学习这方面知识有所帮助. 通常我们会在组件里的 template 属性定 ...
- render注册一个链接组件_详解vue 动态加载并注册组件且通过 render动态创建该组件...
基于 iview Tabs 组件实现 功能:为每个 tab 动态创建不同的.特定的组件内容,而不需要大量的 import 组件并进行 component 注册 Index.vue import loa ...
- 一文详解Mybatis动态SQL,建议收藏
一文详解Mybatis动态SQL,建议收藏 1.动态 SQL 2.IF 3.choose.when.otherwise 4.where 5.set 6.trim 7.SQL片段 8.foreach 1 ...
- 2. IMU原理及姿态融合算法详解
文章目录 2. IMU原理及姿态融合算法详解 一.组合 二. 原理 a) 陀螺仪 b) 加速度计 c) 磁力计 三. 旋转的表达 a) 欧拉角 b) 旋转矩阵 c) 四元数 d) 李群 SO(3)\t ...
- Android studio 多渠道(多环境)打包grade配置详解
Android studio 多渠道(多环境)打包grade配置详解 场景:开发app,我们需要两套环境或者两套环境以上的apk,每套环境的apk分两个版本debug版和release版. 公司有套平 ...
- Clickhouse的数据存储原理、二进制文件内容分析与索引详解
Clickhouse的数据存储原理.二进制文件内容分析与索引详解 Clickhouse以其强大的性能著称,已经被越来越多的使用在OLAP分析查询等场景中.Clickhouse是一个列式存储的数据库,而 ...
- Android基础入门教程——2.3.1 TextView(文本框)详解
Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解And ...
- AidLux “人脸测试”案例源码详解
"人脸检测"案例源码详解 testface.py用于进行人脸检测 构建APP框架和添加主要控件 人脸关键点识别的方法 打开人脸测试案例 1.在VScode中进入代码编辑状态. 2. ...
最新文章
- python 多维数组删除重复
- 变分自编码器:球面上的VAE(vMF-VAE)
- Spring3.1.0+Quartz1.8.6整合实现计划任务
- Java(31)_JDBC连接mysql数据库(一)
- 渗透测试为什么要重基础、重实践?
- Hyperledger fabric通道(Channel)的新建、管理、节点如何加入channel
- 免费将pdf文件转换成word
- 求和函数java_java函数求和要怎么写?java求和代码实现
- Excel怎么批量删除开头文本
- 关于域名抢注:过期高PR域名抢注价值高吗?
- 软件结构体系实验作业一——使用状态模式模拟会员积分系统
- 转载 Java基本数据类型
- 中南大学2021计算机专硕复试分数线,2021年中南大学研究生录取分数线是多少
- Xposed模块 -- Hook函数参数
- 百度AI语音SDK集成
- 学习笔记(1):PR快速入门-认识界面
- 在Chrome、Firefox等浏览器中实现低延迟播放海康、大华RTSP
- 涂鸦智能平台——mcu+nbiot
- Django 页面静态化
- 比in效率更高的sql查询语句
热门文章
- 到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?
- html批量转换xls格式,htm格式怎么转换excel
- Cesium飞行效果
- Conditional Likelihood Maximisation: A Unifying Framework for Information Theoretic Feature Selecti
- 汉文博士——支持生僻古难字检索的开放式免费汉语词典
- 【C语言】用1,2,3,4四个数字组成不相同并且没有相同数字的三位数
- jvm设置http代理
- 关于setTimeout多次点击会多次执行方法导致运行速度加快的问题
- 清华大学计算机专业课参考书,清华大学计算机考研辅导班:专业考研参考书目...
- Code review是个数学问题:从二向箔说起