原标题:人脸动态贴纸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算法详解,人脸动态贴纸功能如何实现...相关推荐

  1. linux如何确定共享库路径,摘录Linux下动态共享库加载时的搜索路径详解

    对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似"error while loading shared libraries"这样的错误,这是典型的因为需要的动态库不在动态链接器 ...

  2. vue动态设置文字布局方式_详解Vue动态添加模板的几种方法

    动态添加模板需要收集原始数据的页面,这个时候我们需要很多原始数据收集模板,下面给大家详解Vue 动态添加模板的几种方法,希望对你学习这方面知识有所帮助. 通常我们会在组件里的 template 属性定 ...

  3. render注册一个链接组件_详解vue 动态加载并注册组件且通过 render动态创建该组件...

    基于 iview Tabs 组件实现 功能:为每个 tab 动态创建不同的.特定的组件内容,而不需要大量的 import 组件并进行 component 注册 Index.vue import loa ...

  4. 一文详解Mybatis动态SQL,建议收藏

    一文详解Mybatis动态SQL,建议收藏 1.动态 SQL 2.IF 3.choose.when.otherwise 4.where 5.set 6.trim 7.SQL片段 8.foreach 1 ...

  5. 2. IMU原理及姿态融合算法详解

    文章目录 2. IMU原理及姿态融合算法详解 一.组合 二. 原理 a) 陀螺仪 b) 加速度计 c) 磁力计 三. 旋转的表达 a) 欧拉角 b) 旋转矩阵 c) 四元数 d) 李群 SO(3)\t ...

  6. Android studio 多渠道(多环境)打包grade配置详解

    Android studio 多渠道(多环境)打包grade配置详解 场景:开发app,我们需要两套环境或者两套环境以上的apk,每套环境的apk分两个版本debug版和release版. 公司有套平 ...

  7. Clickhouse的数据存储原理、二进制文件内容分析与索引详解

    Clickhouse的数据存储原理.二进制文件内容分析与索引详解 Clickhouse以其强大的性能著称,已经被越来越多的使用在OLAP分析查询等场景中.Clickhouse是一个列式存储的数据库,而 ...

  8. Android基础入门教程——2.3.1 TextView(文本框)详解

    Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解And ...

  9. AidLux “人脸测试”案例源码详解

    "人脸检测"案例源码详解 testface.py用于进行人脸检测 构建APP框架和添加主要控件 人脸关键点识别的方法 打开人脸测试案例 1.在VScode中进入代码编辑状态. 2. ...

最新文章

  1. python 多维数组删除重复
  2. 变分自编码器:球面上的VAE(vMF-VAE)
  3. Spring3.1.0+Quartz1.8.6整合实现计划任务
  4. Java(31)_JDBC连接mysql数据库(一)
  5. 渗透测试为什么要重基础、重实践?
  6. Hyperledger fabric通道(Channel)的新建、管理、节点如何加入channel
  7. 免费将pdf文件转换成word
  8. 求和函数java_java函数求和要怎么写?java求和代码实现
  9. Excel怎么批量删除开头文本
  10. 关于域名抢注:过期高PR域名抢注价值高吗?
  11. 软件结构体系实验作业一——使用状态模式模拟会员积分系统
  12. 转载 Java基本数据类型
  13. 中南大学2021计算机专硕复试分数线,2021年中南大学研究生录取分数线是多少
  14. Xposed模块 -- Hook函数参数
  15. 百度AI语音SDK集成
  16. 学习笔记(1):PR快速入门-认识界面
  17. 在Chrome、Firefox等浏览器中实现低延迟播放海康、大华RTSP
  18. 涂鸦智能平台——mcu+nbiot
  19. Django 页面静态化
  20. 比in效率更高的sql查询语句

热门文章

  1. 到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?
  2. html批量转换xls格式,htm格式怎么转换excel
  3. Cesium飞行效果
  4. Conditional Likelihood Maximisation: A Unifying Framework for Information Theoretic Feature Selecti
  5. 汉文博士——支持生僻古难字检索的开放式免费汉语词典
  6. 【C语言】用1,2,3,4四个数字组成不相同并且没有相同数字的三位数
  7. jvm设置http代理
  8. 关于setTimeout多次点击会多次执行方法导致运行速度加快的问题
  9. 清华大学计算机专业课参考书,清华大学计算机考研辅导班:专业考研参考书目...
  10. Code review是个数学问题:从二向箔说起