具体实施方式
为了使得本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本发明实施例的以下说明清楚且简明,本发明省略了已知功能和已知部件的详细说明。
本发明第一实施例提供了一种处理视频中人脸贴纸的方法,该方法的流程如图1所示,包括步骤S101至S104:
S101,通过预定方式对视频中的人脸进行识别,以确定人脸数据。
由于web浏览器有着客户端无法比拟的便利性,人们可以随时随地打开网页参与视频互动,因此,web浏览器中也是需要融入人脸贴纸的。
由于视频是存在网页中的,其无法采用客户端渲染时使用GPU的方式实现贴纸效果,因此,本发明实施例提供了一种在web浏览器可以实现贴纸效果的方案。该方案在实现时,需要先对人脸进行识别,进而才能够获取识别到的人脸的相关数据。
在对人脸进行识别时,可以采用webAssembly编写可作为预定方式的预定程序,当通过该预定程序识别出人脸后,就可以确定人脸数据,例如用于匹配贴纸的人脸关键点数据,当然,为了更好的让贴纸和人脸完美匹配,还可以进一步获取人脸三维旋转角度数据等数据,本领域技术人员可以根据实际需求进行获取。
S102,获取已选定贴纸的图片列表数据。
每个贴纸都由多个图片组成,且各个图片的不同位置组合确定了贴纸的样式,而且该贴纸还是需要和人脸匹配的贴纸,因此,也有一些用于匹配的数据,当然还可能存在一些其他用于实现贴纸效果的数据,这些数据的集合则为图片列表数据。
S103,根据图片列表数据和人脸数据确定贴纸计算矩阵。
当已经清楚人脸的各种数据和贴纸的各种数据后,就可以根据知晓的这些数据来构造人脸和贴纸相关联的矩阵了。例如,知晓了贴纸的原始大小和与人脸的匹配点,则可以通过计算确定贴纸需要调整的大小;知晓了人脸的旋转角度,也知道贴纸的初始角度,则可以通过计算确定贴纸需要调整的角度等。当贴纸需要调整的数据都确定了,就可以确定贴纸计算矩阵。
S104,根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位。
在贴纸与人脸匹配时,直接使用确定的贴纸计算矩阵即可。
本发明实施例通过人脸数据和贴纸的图片列表数据构建其相互关联的贴纸计算矩阵,进而使用贴纸计算矩阵将贴纸与人脸匹配,实现在web浏览器中也能为用户动态粘贴贴纸,增强了web浏览器端视频时的功能,也提升了用户体验。
本发明第二实施例提供了一种处理视频中人脸贴纸的方法,该方法的流程如图2所示,包括步骤S201至S207:
S201,获取音视频数据,将音视频数据拆分为音频数据和视频数据,并获取拆分后的视频数据。
S202,通过预定方式对视频中的人脸视频中的人脸进行识别,以确定人脸数据。
由于web浏览器有着客户端无法比拟的便利性,人们可以随时随地打开网页参与视频互动,因此,web浏览器中也是需要融入人脸贴纸的。
但由于视频是存在网页中的,其无法采用客户端渲染时使用GPU的方式实现贴纸效果,因此,本发明实施例提供了一种在web浏览器可以实现贴纸效果的方案。该方案在实现时,需要先对人脸进行识别,进而才能够获取识别到的人脸的相关数据。
在对人脸进行识别时,可以采用webAssembly编写作为预定方式的预定程序,当通过该预定程序识别出人脸后,就可以确定人脸数据,例如用于匹配贴纸的人脸关键点数据,当然,为了更好的让贴纸和人脸完美匹配,还可以进一步获取人脸三维旋转角度数据等数据,本领域技术人员可以根据实际需求进行获取。
S203,获取已选定贴纸的图片列表数据。
每个贴纸都由多个图片组成,且各个图片的不同位置组合确定了贴纸的样式,而且该贴纸还是需要和人脸匹配的贴纸,因此,也有一些用于匹配的数据,当然还可能存在一些其他用于实现贴纸效果的数据,这些数据的集合则为图片列表数据。
S204,根据图片列表数据和人脸数据确定贴纸计算矩阵。
当已经清楚人脸的各种数据和贴纸的各种数据后,就可以根据知晓的这些数据来构造人脸和贴纸相关联的矩阵了。例如,知晓了贴纸的原始大小和与人脸的匹配点,则可以通过计算确定贴纸需要调整的大小;知晓了人脸的旋转角度,也知道贴纸的初始角度,则可以通过计算确定贴纸需要调整的角度等。当贴纸需要调整的数据都确定了,就可以确定贴纸计算矩阵。
在根据图片列表数据和人脸数据确定贴纸计算矩阵时,具体过程可以如下:根据图片列表数据确定贴纸的预定挂载点信息,根据人脸数据确定人脸关键点信息;根据全部预定挂载点信息计算全部预定挂载点的中心点的第一中心点数据;计算各个预定挂载点之间的第一距离、第一相对角度;根据全部人脸关键点信息计算全部人脸关键点的中心点的第二中心点数据;计算各个人脸关键点之间的第二距离、第二相对角度;根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵。
具体根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵时,可以先生成多个矩阵,具体包括如下过程:
以第一中心点数据作为原点生成坐标系的转换矩阵和反向转换矩阵;计算各个第一距离与第一距离对应的第二距离的比值,并根据比值生成缩放矩阵,其中,第一距离对应的第二距离为:第一距离对应的两个预定挂载点相对应的两个人脸关键点的之间的第二距离;计算各个第二相对角度与第二相对角度对应的第一相对角度的差值,并根据差值生成旋转矩阵,其中,第二相对角度对应的第一相对角度为:第二相对角度对应的两个人脸关键点相对应的两个预定挂载点的之间的第一相对角度;计算第二中心点数据与第一中心点数据之间的横坐标差值和纵坐标差值,并根据横坐标差值和纵坐标差值生成位移矩阵;根据转换矩阵、反向转换矩阵、缩放矩阵、旋转矩阵和位移矩阵生成贴纸计算矩阵。先生成多个矩阵,再通过多个矩阵生成贴纸计算矩阵的方式,可以满足浏览器底层api调用时需要传入一个矩阵的要求。
S205,根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位。
在贴纸与人脸匹配时,直接使用确定的贴纸计算矩阵即可。
S206,将贴纸与人脸匹配后的视频数据与音频数据合并,生成具有贴纸的音视频数据。至此,具有贴纸的视频数据和音频数据已经合成,用户可以看到具有贴纸的音视频数据。
S207,发送具有贴纸的音视频数据。至此,视频通话的另一端用户可以在屏幕上看到已经被贴上贴纸的用户的图像,也能够听到相对的声音。
本发明实施例通过人脸数据和贴纸的图片列表数据构建其相互关联的贴纸计算矩阵,进而使用贴纸计算矩阵将贴纸与人脸匹配,实现在web浏览器中也能为用户动态粘贴贴纸,增强了web浏览器端视频时的功能,也提升了用户体验。
本发明第三实施例提供了一种处理视频中人脸贴纸的装置,该装置的结构示意如图3所示,包括:
识别模块10,用于通过预定方式对视频中的人脸视频中的人脸进行识别,以确定人脸数据;第一获取模块20,与识别模块10耦合,用于获取已选定贴纸的图片列表数据;确定模块30,与第一获取模块20耦合,用于根据图片列表数据和人脸数据确定贴纸计算矩阵;匹配模块40,与确定模块30耦合,用于根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位。
由于web浏览器有着客户端无法比拟的便利性,人们可以随时随地打开网页参与视频互动,因此,web浏览器中也是需要融入人脸贴纸的。
但由于视频是存在网页中的,其无法采用客户端渲染时使用GPU的方式实现贴纸效果,因此,本发明实施例提供了一种在web浏览器可以实现贴纸效果的方案。该方案在实现时,需要先对人脸进行识别,进而才能够获取识别到的人脸的相关数据。
在对人脸进行识别时,可以采用webAssembly编写作为预定方式的预定程序,当通过该预定程序识别出人脸后,就可以确定人脸数据,例如用于匹配贴纸的人脸关键点数据,当然,为了更好的让贴纸和人脸完美匹配,还可以进一步获取人脸三维旋转角度数据等数据,本领域技术人员可以根据实际需求进行获取。
每个贴纸都由多个图片组成,且各个图片的不同位置组合确定了贴纸的样式,而且该贴纸还是需要和人脸匹配的贴纸,因此,也有一些用于匹配的数据,当然还可能存在一些其他用于实现贴纸效果的数据,这些数据的集合则为图片列表数据。
当已经清楚人脸的各种数据和贴纸的各种数据后,就可以根据知晓的这些数据来构造人脸和贴纸相关联的矩阵了。例如,知晓了贴纸的原始大小和与人脸的匹配点,则可以通过计算确定贴纸需要调整的大小;知晓了人脸的旋转角度,也知道贴纸的初始角度,则可以通过计算确定贴纸需要调整的角度等。当贴纸需要调整的数据都确定了,就可以确定贴纸计算矩阵。
具体实现时,上述确定模块30可以包括:确定单元,用于根据图片列表数据确定贴纸的预定挂载点信息,根据人脸数据确定人脸关键点信息;计算单元,与确定单元耦合,用于根据全部预定挂载点信息计算全部预定挂载点的中心点的第一中心点数据;计算各个预定挂载点之间的第一距离、第一相对角度;根据全部人脸关键点信息计算全部人脸关键点的中心点的第二中心点数据;计算各个人脸关键点之间的第二距离、第二相对角度;生成单元,与计算单元耦合,用于根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵。
其中,上述生成单元具体用于:以第一中心点数据作为原点生成坐标系的转换矩阵和反向转换矩阵;计算各个第一距离与第一距离对应的第二距离的比值,并根据比值生成缩放矩阵,其中,第一距离对应的第二距离为:第一距离对应的两个预定挂载点相对应的两个人脸关键点的之间的第二距离;计算各个第二相对角度与第二相对角度对应的第一相对角度的差值,并根据差值生成旋转矩阵,其中,第二相对角度对应的第一相对角度为:第二相对角度对应的两个人脸关键点相对应的两个预定挂载点的之间的第一相对角度;计算第二中心点数据与第一中心点数据之间的横坐标差值和纵坐标差值,并根据横坐标差值和纵坐标差值生成位移矩阵;根据转换矩阵、反向转换矩阵、缩放矩阵、旋转矩阵和位移矩阵生成贴纸计算矩阵。生成单元先生成多个矩阵,再通过多个矩阵生成贴纸计算矩阵的方式,可以满足浏览器底层api调用时需要传入一个矩阵的要求。
在一个优选实施例中,上述装置还包括:第二获取模块,与识别模块耦合,用于获取音视频数据,将音视频数据拆分为音频数据和视频数据;获取拆分后的视频数据;合并模块,与匹配模块耦合,用于将贴纸与人脸匹配后的视频数据与音频数据合并,生成具有贴纸的音视频数据;发送具有贴纸的音视频数据。
本发明实施例通过人脸数据和贴纸的图片列表数据构建其相互关联的贴纸计算矩阵,进而使用贴纸计算矩阵将贴纸与人脸匹配,实现在web浏览器中也能为用户动态粘贴贴纸,增强了web浏览器端视频时的功能,也提升了用户体验。
本发明第四实施例提供了一种存储介质,存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例提供的方法,如下步骤S1至S4:
S1,通过预定方式对视频中的人脸进行识别,以确定人脸数据;
S2,获取已选定贴纸的图片列表数据;
S3,根据图片列表数据和人脸数据确定贴纸计算矩阵;
S4,根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位。
计算机程序被处理器执行根据图片列表数据和人脸数据确定贴纸计算矩阵的步骤时,具体被处理器执行如下步骤:根据图片列表数据确定贴纸的预定挂载点信息,根据人脸数据确定人脸关键点信息;根据全部预定挂载点信息计算全部预定挂载点的中心点的第一中心点数据;计算各个预定挂载点之间的第一距离、第一相对角度;根据全部人脸关键点信息计算全部人脸关键点的中心点的第二中心点数据;计算各个人脸关键点之间的第二距离、第二相对角度;根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵。
计算机程序被处理器执行根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵的步骤时,具体被处理器执行如下步骤:以第一中心点数据作为原点生成坐标系的转换矩阵和反向转换矩阵;计算各个第一距离与第一距离对应的第二距离的比值,并根据比值生成缩放矩阵,其中,第一距离对应的第二距离为:第一距离对应的两个预定挂载点相对应的两个人脸关键点的之间的第二距离;计算各个第二相对角度与第二相对角度对应的第一相对角度的差值,并根据差值生成旋转矩阵,其中,第二相对角度对应的第一相对角度为:第二相对角度对应的两个人脸关键点相对应的两个预定挂载点的之间的第一相对角度;计算第二中心点数据与第一中心点数据之间的横坐标差值和纵坐标差值,并根据横坐标差值和纵坐标差值生成位移矩阵;根据转换矩阵、反向转换矩阵、缩放矩阵、旋转矩阵和位移矩阵生成贴纸计算矩阵。
计算机程序被处理器执行通过预定程序对视频中的人脸进行识别,以确定人脸数据的步骤之前,还可以被处理器执行如下步骤:获取音视频数据,将音视频数据拆分为音频数据和视频数据;获取拆分后的视频数据。
计算机程序被处理器执行根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位的步骤之后,还可以被处理器执行如下步骤:将贴纸与人脸匹配后的视频数据与音频数据合并,生成具有贴纸的音视频数据;发送具有贴纸的音视频数据。
下面结合距离示例对上述计算机程序的实现过程进行说明。
在客户端中,我们可以使用比较丰富的GPU处理方法,也有比较多的技术方案可以直接使用,但是在浏览器中无法使用GPU,因此所有设置都要从零开始,本实施例需要实现以下几点功能:
获得摄像头拍到的画面,以进行处理;人脸识别,其中包括人脸区域识别和人脸关键点识别,并输出数据;定义贴纸与人脸器官的对应关系;贴图算法,其中包含贴纸在最终视频中所应用的旋转、缩放、坐标,以便能够适配视频中人脸的真实位置;贴图控制,以实现动画效果;将贴图之后的效果导出,并替换摄像头拍到的画面,同话筒接收到的音频一起发送给接收方进行展现。
实现时,先定义贴纸(T),其中包含使用的图片列表(Is),图片挂载点、挂载点对应的人脸关键点,例如给人脸贴上一个眼镜,我们可以将两只眼镜片的中心点和人眼球的中心点作为挂载点和对应的关键点,最终将图片贴上去之后能够做到挂载点和关键点重合就可以达到比较真实的效果(以下将以眼镜做样例说明贴纸实现逻辑)。按一定频率在Is中选取不同的图片进行切换,可以实现动态图像的效果。具体的,还可以定义动画(A),其中包含多个T,以便在人脸中同时应用多个贴纸效果。
本实施例的具体过程如下:
1.通过navigator.getUserMedia获取用户的音视频信息,这是一个媒体流(S1),其中包含视频轨道(Tv)和音频轨道(Ts),持有S1并复制出媒体流(S2,其中包含Tv和Ts)以待第10步处理。
2.创建视频播放器(V1)并将S1导入进行播放,并根据需要判断是否静音。
3.创建画布(C),将V1绘制到C,并从中取出图像数据(D)。
4.使用webAssembly创建人脸识别程序(W),将D导入进行运算,获得识别结果(R),其中包含识别到的人脸和人脸关键点数据以及人脸的三维旋转角度。
5.根据策略在A中选取一个T,读取其指定的挂载点和人脸关键点信息,根据策略在Is中选取一张图片(I)。
6.计算两个挂载点的中心点(Po)作为变换中心,计算两个挂载点的距离(Di)、相对角度(Ai);计算两个关键点的中心点(Pd),计算两个关键点的距离(Dk)、相对角度(Ak)。
7.计算图片绘制时需要进行的变换矩阵:由变换中心生成坐标系转换矩阵Mc和反向转换矩阵M-c;计算Di/Dk值为缩放值,生成缩放矩阵Ms;计算Ak-Ai为旋转角度,生成旋转矩阵Mr;计算Pd-Po的x、y方向偏移,生成位移矩阵Mt。
8.计算M=M-c*Mt*Mr*Ms*Mc,对画布C应用transform(M),将图片I绘制到C中,此时例子中I所显示的眼镜就会准确贴到人的眼睛部位,并且眼镜的大小和方向是贴合人脸的。
9.重复进行5-8过程,以应用多个贴纸效果。
10.从C中获取视频流S3,其中包含一个视频轨道Tv2,从S2中删除Tv,并将Tv2加入,将S2发送给接收方,接收方使用视频播放器播放S2即可看到经过贴图处理的视频,并且能够听到发送方的声音。
该实施例选取webAssembly程序进行人脸识别,进行了图片贴纸信息的定义及各阶段的计算过程,改变摄像头获取的音视频内容并对音视频轨道进行替换的处理。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本发明第五实施例提供了一种电子设备,如图4所示,该电子设备至少包括存储器901和处理器902,存储器901上存储有计算机程序,处理器902在执行存储器901上的计算机程序时实现本发明任意实施例提供的方法,示例性的,计算机程序步骤如下S11至S14:
S11,通过预定方式对视频中的人脸进行识别,以确定人脸数据;
S12,获取已选定贴纸的图片列表数据;
S13,根据图片列表数据和人脸数据确定贴纸计算矩阵;
S14,根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位。
处理器902在执行存储器901上存储的根据图片列表数据和人脸数据确定贴纸计算矩阵的计算机程序时,具体执行如下计算机程序:根据图片列表数据确定贴纸的预定挂载点信息,根据人脸数据确定人脸关键点信息;根据全部预定挂载点信息计算全部预定挂载点的中心点的第一中心点数据;计算各个预定挂载点之间的第一距离、第一相对角度;根据全部人脸关键点信息计算全部人脸关键点的中心点的第二中心点数据;计算各个人脸关键点之间的第二距离、第二相对角度;根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵。
处理器902在执行存储器901上存储的根据第一中心点数据、第一距离、第一相对角度、第二中心点数据、第二距离和第二相对角度生成贴纸计算矩阵的计算机程序时,具体执行如下计算机程序:以第一中心点数据作为原点生成坐标系的转换矩阵和反向转换矩阵;计算各个第一距离与第一距离对应的第二距离的比值,并根据比值生成缩放矩阵,其中,第一距离对应的第二距离为:第一距离对应的两个预定挂载点相对应的两个人脸关键点的之间的第二距离;计算各个第二相对角度与第二相对角度对应的第一相对角度的差值,并根据差值生成旋转矩阵,其中,第二相对角度对应的第一相对角度为:第二相对角度对应的两个人脸关键点相对应的两个预定挂载点的之间的第一相对角度;计算第二中心点数据与第一中心点数据之间的横坐标差值和纵坐标差值,并根据横坐标差值和纵坐标差值生成位移矩阵;根据转换矩阵、反向转换矩阵、缩放矩阵、旋转矩阵和位移矩阵生成贴纸计算矩阵。
处理器902在执行存储器901上存储的通过预定方式对视频中的人脸进行识别,以确定人脸数据的计算机程序之前,还可以执行如下计算机程序:获取音视频数据,将音视频数据拆分为音频数据和视频数据;获取拆分后的视频数据。
处理器902在执行存储器901上存储的根据贴纸计算矩阵将贴纸进行调整,以匹配到识别到的人脸对应的部位的计算机程序之后,还可以执行如下计算机程序:将贴纸与人脸匹配后的视频数据与音频数据合并,生成具有贴纸的音视频数据;发送具有贴纸的音视频数据。
本发明实施例通过人脸数据和贴纸的图片列表数据构建其相互关联的贴纸计算矩阵,进而使用贴纸计算矩阵将贴纸与人脸匹配,实现在web浏览器中也能为用户动态粘贴贴纸,增强了web浏览器端视频时的功能,也提升了用户体验。
此外,尽管已经在本文中描述了示例性实施例,其范围包括任何和所有基于本发明的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,真正的范围和精神由以下权利要求以及其等同物的全部范围所指示。
以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本发明。这不应解释为一种不要求保护的公开的特征对于任一权利要求是必要的意图。相反,本发明的主题可以少于特定的公开的实施例的全部特征。从而,以下权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本发明的范围应参照所附权利要求以及这些权利要求赋权的等同形式的全部范围来确定。
以上对本发明多个实施例进行了详细说明,但本发明不限于这些具体的实施例,本领域技术人员在本发明构思的基础上,能够做出多种变型和修改实施例,这些变型和修改都应落入本发明所要求保护的范围之内。