本公开涉及图像处理领域,尤其涉及一种虚拟对象的控制方法、装置、电子设备及计算机可读存储介质。
背景技术:
随着计算机技术的发展,智能终端的应用范围得到了广泛的提高,例如可以通过智能终端听音乐、玩游戏、上网聊天和拍照等。对于智能终端的拍照技术来说,其拍照像素已经达到千万像素以上,具有较高的清晰度和媲美专业相机的拍照效果。
目前在采用智能终端进行拍照时,不仅可以使用出厂时内置的拍照软件实现传统功能的拍照效果,还可以通过从网络端下载应用程序(application,简称为:app)来实现具有附加功能的拍照效果,例如可以实现暗光检测、美颜相机和超级像素等功能的app。智能终端的美颜功能通常包括肤色调整、磨皮、大眼和瘦脸等美颜处理效果,能对图像中已识别出的所有人脸进行相同程度的美颜处理。目前也有app可以实现简单的显示虚拟对象的功能,比如在屏幕的固定位置显示一个固定的虚拟对象,虚拟对象可以做一些简单的动作。
然而目前的虚拟对象,只能在固定的位置固定的时间显示,如果需要改变虚拟的显示属性,需要直接对虚拟对象本身进行修改或者需要通过控件对虚拟对象进行控制,因此虚拟对象的控制很不灵活。
技术实现要素:
第一方面,本公开实施例提供一种虚拟对象的控制方法,包括:获取视频,所述视频中包括人手;初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;获取所述多个虚拟对象的位置;识别所述视频中的人手,得到人手的第一信息;识别所述人手的第一动作;根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。
进一步的,所述初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:获取多个虚拟对象;获取所述多个虚拟对象的初始化位置;根据所述初始化位置,将所述多个虚拟对象显示于所述视频中。
进一步的,所述初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:识别视频中的人手;响应于识别到所述人手的第二动作,读取所述多个虚拟对象的配置文件;根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示于所述视频中。
进一步的,所述根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:解析所述多个虚拟对象的配置文件,获取所述多个虚拟对象的获取地址、初始化位置;根据所述获取地址获取所述虚拟对象,根据所述初始化位置将所述多个虚拟对象显示与所述视频中。
进一步的,所述识别所述视频中的人手,得到人手的第一信息,包括:识别所述视频中的人手,获取人手的关键点以及人手的第一位置。
进一步的,所述识别所述视频中的人手,获取人手的关键点以及人手的第一位置,包括:识别所述视频中的人手,获取人手的关键点;获取所述人手关键点中的预设关键点作为所述人手的第一位置。
进一步的,所述识别所述人手的第一动作,包括:根据所述人手的关键点,识别所述人手的运动轨迹,其中所述运动轨迹包括所述人手的起点位置以及所述人手的终点位置。
进一步的,所述根据所述人手的关键点,识别所述人手的运动轨迹,包括:
跟踪人手的关键点;当所述关键点的第一位置在预设时间内没有发生变化,将所述第一位置识别为所述人手的起点位置;识别所述关键点的移动;当所述关键点的第二位置在预设时间内没有发生变化,将所述第二位置识别为所述人手的终点位置。
进一步的,所述根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示,包括:
根据所述人手的第一信息和所述多个虚拟对象的位置,确定被控制的第一虚拟对象;根据所述人手的第一动作控制所述第一虚拟对象的显示位置。
进一步的,所述根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一信息控制所述多个虚拟对象中的至少一个虚拟对象的显示,包括:
当所述人手的第一位置与所述多个虚拟对象中的第二虚拟对象的位置小于第一阈值,则将所述第二虚拟对象从所述第二虚拟对象的位置移动到所述人手的终点位置。
第二方面,本公开实施例提供一种虚拟对象的控制装置,包括:
视频获取模块,用于获取视频,所述视频中包括人手;
初始化模块用于,初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;
虚拟对象位置获取模块,用于获取所述多个虚拟对象的位置;
人手识别模块,用于识别所述视频中的人手,得到人手的第一信息;
动作识别模块,用于识别所述人手的第一动作;
显示控制模块,用于根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。
进一步的,所述初始化模块,包括:
虚拟对象获取模块,用于获取多个虚拟对象;
初始化位置获取模块,用于获取所述多个虚拟对象的初始化位置;
第一初始化模块,用于根据所述初始化位置,将所述多个虚拟对象显示于所述视频中。
进一步的,所述初始化模块,包括:
第一识别模块,用于识别视频中的人手;
配置文件读取模块,用于响应于识别到所述人手的第二动作,读取所述多个虚拟对象的配置文件;
第二初始化模块,用于根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示与所述视频中。
进一步的,所述第二初始化模块,包括:
配置文件解析模块,用于解析所述多个虚拟对象的配置文件,获取所述多个虚拟对象的获取地址、初始化位置;
第二初始化子模块,用于根据所述获取地址获取所述虚拟对象,根据所述初始化位置将所述多个虚拟对象显示与所述视频中。
进一步的,所述人手识别模块,还用于:识别所述视频中的人手,获取人手的关键点以及人手的第一位置。
进一步的,所述人手识别模块,还包括:
关键点获取模块,用于识别所述视频中的人手,获取人手的关键点;
第一位置获取模块,用于获取所述人手关键点中的预设关键点作为所述人手的第一位置。
进一步的,所述动作识别模块,还包括:
运动轨迹识别模块,用于根据所述人手的关键点,识别所述人手的运动轨迹,其中所述运动轨迹包括所述人手的起点位置以及所述人手的终点位置。
进一步的,所述运动轨迹识别模块,还包括:
跟踪模块,用于跟踪人手的预设关键点;
起点位置确定模块,用于当所述预设关键点的第一位置在预设时间内没有发生变化,将所述第一位置识别为所述人手的起点位置;
移动识别模块,用于识别所述预设关键点的移动;
终端位置确定模块,用于当所述预设关键点的第二位置在预设时间内没有发生变化,将所述第二位置识别为所述人手的终点位置。
进一步的,所述显示控制模块,包括:
虚拟对象确定模块,用于根据所述人手的第一信息和所述多个虚拟对象的位置,确定被控制的第二虚拟对象;
第一显示控制模块,用于根据所述人手的第一动作控制所述第二虚拟对象的显示位置。
进一步的,所述显示控制模块,还用于:当所述人手的第一位置与所述多个虚拟对象中的第一虚拟对象的位置小于第一阈值,则将所述第一虚拟对象从所述第一虚拟对象的位置移动到所述人手的终点位置。
第三方面,本公开实施例提供一种电子设备,包括:至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述第一方面中的任一所述虚拟对象的控制方法。
第四方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面中的任一所述虚拟对象的控制方法。
本公开公开了一种虚拟对象的控制方法、装置、电子设备和计算机可读存储介质。其中该虚拟对象的控制方法包括:获取视频,所述视频中包括人手;初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;获取所述多个虚拟对象的位置;识别所述视频中的人手,得到人手的第一信息;识别所述人手的第一动作;根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。本公开实施例通过人手的动作和人手的信息直接控制已经显示的虚拟对象显示属性,解决了现有技术中对虚拟对象的显示控制不灵活的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的虚拟对象的控制方法实施例的流程图;
图2为本公开实施例提供的虚拟对象的控制方法的一个实例示意图;
图3为本公开实施例提供的虚拟对象的控制装置实施例的结构示意图;
图4为根据本公开实施例提供的电子设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
图1为本公开实施例提供的虚拟对象的控制方法实施例一的流程图,本实施例提供的所述虚拟对象的控制方法可以由一虚拟对象的控制装置来执行,所述虚拟对象的控制装置可以实现为软件,或者实现为软件和硬件的组合,所述虚拟对象的控制装置可以集成设置在图像处理系统中的某设备中,比如图像处理服务器或者图像处理终端设备中。如图1所示,所述方法包括如下步骤:
步骤s101,获取视频,所述视频中包括人手;
获取视频可以通过图像传感器获取,所述图像传感器指可以采集图像的各种设备,典型的图像传感器为摄像机、摄像头、相机等。在所述实施例中,所述图像传感器可以是移动终端上的摄像头,比如智能手机上的前置或者后置摄像头,摄像头采集的视频图像可以直接显示在手机的显示屏上,在所述步骤中,获取图像传感器所拍摄的图像视频,用于在下一步进一步识别图像。
所述视频中还包括人手,所述人手可以是通过所述图像传感器采集到的人手。
步骤s102,初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;
本公开中的虚拟对象可以是任何2d或者3d的虚拟对象,典型的如虚拟的宝剑、虚拟的手枪等虚拟武器,虚拟的笔、虚拟的书等虚拟文具,虚拟的手套、虚拟的戒指等虚拟可穿戴物品等等,虚拟的星星、月亮,虚拟的文字等等,在此不做具体的限制,任何虚拟对象都可以引入到本公开中。
在一个实施例中,所述初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:获取多个虚拟对象;获取所述多个虚拟对象的初始化位置;根据所述初始化位置,将所述多个虚拟对象显示于所述视频中。在所述实施例中,获取多个虚拟对象,可以是从预设的地址获取虚拟对象,可选的所述预设的地址可以是本地地址或者网络地址;所述获取所述多个虚拟对象的初始化位置,可选的,可以获取所述多个虚拟对象中的每一个的初始化位置;可选的,可以获取所述多个虚拟对象的初始化位置区域;可选的,还可以获取所述虚拟对象的初始化位置函数,所述函数为与时间相关的函数;根据所述初始化位置,将所述多个虚拟对象显示于所述视频中与所述初始化位置对应的位置上。当所述初始化位置为所述多个虚拟对象中的每一个的初始化位置,则直接根据所述初始化位置确定所述多个虚拟对象中的每一个在所述视频中的位置;当所述初始化位置为所述多个虚拟对象的初始化位置区域,则可以将所述多个虚拟对象随机的初始化在所述初始化位置区域内;当所述初始化位置为所述多个虚拟对象的初始化位置函数时,根据所述函数在时间0点的值,确定所述多个虚拟对象中的每一个的初始化位置,之后虚拟对象在所述视频中的位置可以通过初始化之后所经过的时间以及所述函数计算出来。
在一个实施例中,还可以加入触发所述初始化的事件,用于触发所述多个虚拟对象的初始化过程。在所述实施例中,所述初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:识别视频中的人手;响应于识别到所述人手的第二动作,读取所述多个虚拟对象的配置文件;根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示与所述视频中。所述识别人手和人手动作的过程在后边的步骤中将详细描述,在此不再赘述。在所述实施例中,当识别到所述人手做出第二动作,则读取所述多个虚拟对象的配置文件,并根据配置文件初始化所述多个虚拟对象。其中所述根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示与所述视频中,包括:解析所述多个虚拟对象的配置文件,获取所述多个虚拟对象的获取地址、初始化位置;根据所述获取地址获取所述虚拟对象,根据所述初始化位置将所述多个虚拟对象显示与所述视频中。当获取到初始化位置之后,初始化的过程与之前的过程一致,不再赘述。作为一个第二动作的例子,可以设置所述第二动作为用拳头砸桌面的动作,当识别到所述动作时,在视频中的初始化位置上显示所述多个虚拟对象。
步骤s103,获取所述多个虚拟对象的位置;
在所述实施例中,获取所述多个虚拟对象在视频中的位置。根据步骤s102中的实施例,所述获取所述多个虚拟对象的位置可以包括多种方式。
可选的,当所述初始化位置为所述多个虚拟对象中的每一个的初始化位置,则直接根据所述初始化位置确定所述多个虚拟对象中的每一个在所述视频中的位置,此时所述多个虚拟对象在视频中的位置为固定位置,所述获取所述多个虚拟对象的位置可以直接通过初始化位置来获取;
可选的,当所述初始化位置为所述多个虚拟对象的初始化位置区域,则可以将所述多个虚拟对象随机的初始化在所述初始化位置区域内。此时,由于所述多个虚拟对象的位置是随机的,因此可以通过识别每个虚拟对象的特征点位置来确定所述虚拟对象的位置,具体的可以获取当前时间的视频帧,对视频帧中的虚拟对象进行识别,识别出虚拟对象的中心特征点,根据所述中心特征点在视频中的位置,获取所述多个虚拟对象的位置。
可选的,当所述初始化位置为所述多个虚拟对象的初始化位置函数时,根据所述函数在时间0点的值,确定所述多个虚拟对象中的每一个的初始化位置。此时,记录初始化之后所经过的时间,将所述时间作为一个参数带入所述函数中计算得到当前时间点所述多个虚拟对象的位置。
可以理解是的,获取所述多个虚拟对象在视频中的位置的方式不局限于上述方式,上述方式仅仅是为了方便理解的举例,实际上任何可以获取到虚拟对象在视频中的位置的方式均可以应用到本公开中来,在此不再赘述。
步骤s104,识别所述视频中的人手,得到人手的第一信息;
在一个实施例中,所述识别所述视频中的人手,得到人手的第一信息,包括:识别所述视频中的人手,获取人手的关键点以及人手的第一位置。其中所述识别所述视频中的人手,获取人手的关键点以及人手的第一位置,包括:识别所述视频中的人手,获取人手的关键点;获取所述人手关键点中的预设关键点作为所述人手的第一位置。
在识别人手时,可以使用颜色特征定位人手的位置,将人手从背景中分割出来,对找到和分割出的人手图像进行特征提取与识别。具体的,使用图像传感器获取图像的颜色信息以及颜色信息的位置信息;将所述颜色信息与预设的人手颜色信息对比;识别第一颜色信息,所述第一颜色信息与所述预设的人手颜色信息的误差小于第一阈值;利用所述第一颜色信息的位置信息形成人手的轮廓。优选的,为了避免环境亮度对颜色信息的干扰,可以将图像传感器采集到的rgb颜色空间的图像数据映射到hsv颜色空间,使用hsv颜色空间中的信息作为对比信息,优选的,将hsv颜色空间中的色调值作为颜色信息,色调信息受亮度的影响最小,可以很好的过滤亮度的干扰。使用人手轮廓粗略确定人手的位置,之后对人手进行关键点提取。在图像上进行人手关键点提取,相当于寻找每个人手轮廓关键点在人手图像中的对应位置坐标,即关键点定位,这一过程需要基于关键点对应的特征进行,在获得了能够清晰标识关键点的图像特征之后,依据此特征在图像中进行搜索比对,在图像上精确定位关键点的位置。由于关键点在图像中仅占据非常小的面积(通常只有几个至几十个像素的大小),关键点对应的特征在图像上所占据的区域通常也是非常有限和局部的,目前用的特征提取方式有两种:(1)沿轮廓垂向的一维范围图像特征提取;(2)关键点方形邻域的二维范围图像特征提取。上述两种方式有很多种实现方法,如asm和aam类方法、统计能量函数类方法、回归分析方法、深度学习方法、分类器方法、批量提取方法等等。上述各种实现方法所使用的关键点个数,准确度以及速度各不相同,适用于不同的应用场景。同样的,对于其他的目标物体,也可以使用同样的原理来识别目标物体。
在识别出人手之后,在人手的外轮廓之外圈定一个多边形,作为人手的外接检测框,所述外接检测框用于替代所述人手,描述所述人手的位置,在此以矩形为例,在识别出人手的关键点之后,可以计算人手最宽处的宽度以及最长处的长度,以所述宽度和长度识别出人手的外接检测框。计算人手的最长处和最宽处的一个实现方式为,提取人手的边界关键点,计算x坐标距离最远的两个边界关键点的x坐标之差,作为矩形宽的长度,计算y坐标距离最远的两个边界关键点的y坐标之差,作为矩形长的长度。如果人手缩成拳头状,可以设定外接检测框为覆盖拳头的最小圆形。具体的,可以用外接检测框的中心点作为手的位置,所述外接检测框的中心点为外接检测框对角线的交点;也可以用所述圆形的圆心代替拳头的位置。
人手信息还包括检测出来的人手关键点,所述关键点的数量可以设置,一般来说可以包括人手轮廓的关键点和关节关键点,每个关键点有固定编号,比如可以按照轮廓关键点、大拇指关节关键点、食指关节关键点、中指关节关键点、无名指关节关键点、小拇指关节关键点的顺序,从上到下编号,在一个典型的应用中,所述关键点为22个,每个关键点有固定编号。在一个实施例中,也可以使用手掌中心的关键点来表示人手的位置。在一个实施例中,可以设定预设的关键点表示人手的位置,典型的,可以使用食指的关键点作为人手位置的确定点,此时当用户的手在视频中点选移动时,通过伸出的食指的关键点来确定点选和移动的位置。
在一个实施例中,在计算所述人手信息之前,还包括对人手的识别数据进行平滑和坐标归一化处理的步骤。具体的,所述平滑处理可以是将多帧视频中的图像进行平均,将平均之后的图像作为识别出的图像,对应到本公开中的人手上,可以对多帧图像中的人手进行识别,之后将人手图像做加权平均,将平均之后得到的人手图像作为识别出的人手,计算人手信息,这样可以在丢失某些帧或者某些帧识别的图像不是很清晰的情况下,依然可以确定人手的图像并计算人手的信息。坐标归一化处理,是将坐标范围统一,如摄像头所采集到的人手图像和显示在显示屏上的人手图像的坐标并不统一,需要有一个映射关系来将大坐标系映射到一个小坐标系上。经过平滑处理和归一化处理之后,得到人手的信息。
步骤s105,识别所述人手的第一动作;
在一个实施例中,所述识别所述人手的第一动作包括:根据所述人手的关键点,识别所述人手的运动轨迹,其中所述运动轨迹包括所述人手的起点位置以及所述人手的终点位置。其中,所述根据所述人手的关键点,识别所述人手的运动轨迹,包括:跟踪人手的预设关键点;当所述预设关键点的第一位置在预设时间内没有发生变化,将所述第一位置识别为所述人手的起点位置;识别所述预设关键点的移动;当所述预设关键点的第二位置在预设时间内没有发生变化,将所述第二位置识别为所述人手的终点位置。
所述人手动作可以包括手势和/或人手的运动轨迹;
手势的识别可以利用步骤s103中所获取的人手图像信息,放入深度学习模型中识别,如将人手的关键点信息输入深度学习模型,将人手的手势识别出来,在此不再赘述。
在所述步骤中,还可以识别人手的动作,所述人手的动作记录人手的运动轨迹,并分析所述运动轨迹来识别。具体的,记录人手的运动轨迹首先需要跟踪人手的运动,在基于视觉的人手动作识别系统中,人手运动轨迹跟踪是跟踪手势在图片序列中的位置变化,获取人手在连续时间上的位置信息,人手运动轨迹跟踪效果的优劣直接影响人手动作识别的效果。常用的动作跟踪方法有粒子滤波算法、均值漂移(mean-shift)算法、卡尔曼滤波法和骨骼跟踪法等。
其中,基于粒子滤波的目标跟踪是在随机运动模型中获取目标分布的后验概率估计的随机搜索过程,粒子滤波主要分为两步:初步采样和重复采样。初步采样是在一副图像中随机放置粒子,然后计算每个粒子和跟踪目标特征的相似度,进而获得每个粒子的权重。重采样阶段主要是根据初步采样中粒子的权重,改变粒子的分布情况。重复初步采样和重采样的过程,直到跟踪到目标。
均值漂移法(mean-shift)是非参数概率密度梯度估计算法。在人手动作识别中,利用mean-shift算法来跟踪人手的基本思路是:首先建立人手的模型,即计算初始图像帧中属于手部的像素在特征空间的特征值的概率;然后建立当前帧的模型,计算人手可能存在区域的所有像素的特征值概率;最后通过求取初始人手模型和当前帧的人手模型的相似性来得到人手均值漂移量。根据均值漂移算法的收敛性,迭代计算手部的均值漂移量,达到收敛到当前图像帧中人手位置的目的。
卡尔曼滤波是利用一系列数学方程预测线性系统在现在或将来的状态。在人手运动轨迹跟踪中,卡尔曼滤波主要是观测一系列图像帧中人手的位置信息,然后预测下一帧中人手的位置。因为卡尔曼滤波是在每个时间间隔的后验概率估计的假设上成立的,所以卡尔曼滤波方法在高斯分布环境下能取得较好的跟踪效果。这种方法能去除噪声,并在手势变形下仍能取得较好的人手跟踪效果。
随着微软kinect的广泛应用,许多研究者利用微软的microsoftkinect传感器特有的骨骼点跟踪来做人手跟踪的研究。在传感器的视野范围内,kinect可以提供一名或者两名用户完整的骨骼跟踪,即全身20个关节点的跟踪。骨骼点跟踪分为主动跟踪和被动跟踪,在主动跟踪的模式下,在视野内选择两个可能的用户进行跟踪,在被动跟踪模式下,最多可以跟踪6个用户的骨骼点,多余的四个只作位置跟踪。kinect的骨骼跟踪的原理是在获取的深度图像的基础上,通过对人体的32个部分进行分类和机器学习的方法,找到各个部分的骨骼关节点信息。
由于在所述步骤中可以采集人手骨骼的关键点,因此在本公开中可以优先使用基于骨骼跟踪的人手运动轨迹跟踪方法。在分析运动轨迹识别人手动作时,需要识别人手动作的起点和终点,在本公开中,可以计算人手关键点在连续两帧图像中的移动距离,当距离小于一个预设阈值时,认为关键点的位置保持不变,当关键点的预设的连续几帧都保持位置不变时,将手部的位置识别为人手动作的起点或终点,典型的比如所述阈值可以设为1cm,当连续6帧内关键点位置没有发生变化时,将人手的位置作为人手动作的起点或终点。之后可以计算起点和终点之间的图像帧中关键点的位置,所有图像帧中的关键点所形成的轨迹即为人手的运动轨迹,将起点和终点之间的运动轨迹与预设的运动轨迹进行对比识别,当相似度大于一个预设的相似阈值时,将所述运动轨迹识别为一个人手动作。
步骤s105,根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。
在一个实施例中,所述根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一信息控制所述多个虚拟对象中的至少一个虚拟对象的显示,包括:当所述人手的第一位置与所述多个虚拟对象中的第一虚拟对象的位置小于第一阈值,则将所述第一虚拟对象从所述第一虚拟对象的位置移动到所述人手的终点位置。
在一个实施例中,所述根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示,包括:根据所述人手的第一信息和所述多个虚拟对象的位置,确定被控制的第二虚拟对象;根据所述人手的第一动作控制所述第二虚拟对象的显示位置。
在一个具体实施方式中,当所述人手的第一位置与所述虚拟对象的位置小于第一阈值时,判断所述人手和所述虚拟对象重合,此时识别所述人手的运动轨迹,控制所述虚拟对象的显示位置。
所述显示位置,可以与人手显示位置关联,在一个实施例中,人手的位置由外接检测框的中心点确定,则虚拟对象的显示位置可以直接跟中心点重合,此时可以将虚拟对象的中心位置与外接检测框的中心点重合;或者所述虚拟对象的显示位置可以与所述中心点保持一定的位置关系,比如虚拟对象的显示位置可以位于所述中心点y轴正向上1个长度单位的位置,所述长度单位可以是自定义的长度单位,如1个长度单位等于1cm等等,在此不做限制。总之,可以通过一定的关系来确定虚拟对象的显示位置。为了显示位置更加精确,可以加入人手的关键点,此时可以设置虚拟对象挂载于人手的某几个关键点上,在一个实现方式中,可以在虚拟对象上设置3个点,这3个点与人手上的3个关键点对应,通过这种对应关系,可以确定虚拟对象的显示位置。
在一个具体实施方式中,还可以根据人手信息获取所述虚拟对象的显示大小信息,比如可以通过人手的外接检测框面积来确定虚拟对象的大小,可以预先设置外接检测框与虚拟对象的大小对应关系,或者根据外接检测框的大小动态确定虚拟对象的大小,以动态确定虚拟对象的大小为例,可以将第一次检测到人手的人手外接检测框的原始面积大小设置为1,此时显示虚拟对象的原始大小,当人手相对于图像传感器做前后运动时,外接检测框的面积发生变化,比如人手向后移动,外接检测框的面积变为第一次检测到人手的人手外接检测框的面积的0.5倍,则虚拟对象也缩放成原始大小的0.5倍;当人手向前移动,外接检测框的面积变为第一次检测到人手的人手外接检测框的面积的2倍,则虚拟对象也缩放成原始大小的2倍,由此可以灵活的控制虚拟对象的缩放;当然缩放比例可以通过一定的函数来控制,比如设置外接检测框的原始面积为s,当前面积为s1,设虚拟对象的缩放比例为r,则可以设置r=(s1/s)2,这样虚拟对象的缩放不是线性的,可以实现更多的效果。当然这个缩放比例的控制函数可以根据需要任意设置,上述方式只是举例。所述的根据人手信息获取所述虚拟对象的显示大小信息中的人手信息不限于外接检测框的面积,也可以是外接检测框的边长,或者人手关键点之间的距离等,在此也不做限制。通过上述步骤,可以控制虚拟对象相对于屏幕的远近效果。
本公开公开了一种虚拟对象的控制方法、装置、电子设备和计算机可读存储介质。其中所述虚拟对象的控制方法包括:获取视频,所述视频中包括人手;初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;获取所述多个虚拟对象的位置;识别所述视频中的人手,得到人手的第一信息;识别所述人手的第一动作;根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。本公开实施例通过人手的动作和人手的信息直接控制已经显示的虚拟对象显示属性,解决了现有技术中对虚拟对象的显示控制不灵活的技术问题。
为了方便理解,参见附图2a-2h为本公开所公开的一种虚拟对象的控制方法的具体实例。参见附图2a,为步骤s101中获取到的视频,所述视频中包括人手的图像;参见附图2b,为虚拟对象的初始化示意图,在所述实例中,所使用的是步骤s102中使用触发事件触发虚拟对象初始化的方式,在所述实例中,识别人手拍桌面的动作,所述动作作为虚拟对象初始化的触发动作,以触发虚拟对象的初始化显示在所述视频中,如图2c所示为初始化后的虚拟对象,在所述实例中所述虚拟对象为虚拟的文字;如图2d-2e所示,之后识别人手的位置以及人手的动作,当人手的位置与所述虚拟文字中的一个重合且所述人手的位置在多帧视频中未发生移动,则选择所述虚拟文字为选定的虚拟文字,在所述具体实例中,“特”字被选中,之后识别人手的移动轨迹,“特”字根据所述人手的移动轨迹移动,当判断人手移动到第二位置之后在多帧图像中未发生位置变化,则“特”字移动到第二位置;如图2f-2h所示,为重复上述步骤移动第二个虚拟对象,手指离开第二位置,重新识别人手,重复上述步骤,移动“效”字,最终将“特”和“效”在视频中组成“特效”一词。
图3为本公开实施例提供的虚拟对象的控制装置实施例的结构示意图,如图3所示,所述装置300包括:视频获取模块301、初始化模块302、虚拟对象位置获取模块303、人手识别模块304、动作识别模块305和显示控制模块306。其中,
视频获取模块301,用于获取视频,所述视频中包括人手;
初始化模块用于302,初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;
虚拟对象位置获取模块303,用于获取所述多个虚拟对象的位置;
人手识别模块304,用于识别所述视频中的人手,得到人手的第一信息;
动作识别模块305,用于识别所述人手的第一动作;
显示控制模块306,用于根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。
进一步的,所述初始化模块302,包括:
虚拟对象获取模块,用于获取多个虚拟对象;
初始化位置获取模块,用于获取所述多个虚拟对象的初始化位置;
第一初始化模块,用于根据所述初始化位置,将所述多个虚拟对象显示于所述视频中。
进一步的,所述初始化模块302,包括:
第一识别模块,用于识别视频中的人手;
配置文件读取模块,用于响应于识别到所述人手的第二动作,读取所述多个虚拟对象的配置文件;
第二初始化模块,用于根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示与所述视频中。
进一步的,所述第二初始化模块,包括:
配置文件解析模块,用于解析所述多个虚拟对象的配置文件,获取所述多个虚拟对象的获取地址、初始化位置;
第二初始化子模块,用于根据所述获取地址获取所述虚拟对象,根据所述初始化位置将所述多个虚拟对象显示与所述视频中。
进一步的,所述人手识别模块304,还用于:
识别所述视频中的人手,获取人手的关键点以及人手的第一位置。
进一步的,所述人手识别模块304,还包括:
关键点获取模块,用于识别所述视频中的人手,获取人手的关键点;
第一位置获取模块,用于获取所述人手关键点中的预设关键点作为所述人手的第一位置。
进一步的,所述动作识别模块305,还包括:
运动轨迹识别模块,用于根据所述人手的关键点,识别所述人手的运动轨迹,其中所述运动轨迹包括所述人手的起点位置以及所述人手的终点位置。
进一步的,所述运动轨迹识别模块,还包括:
跟踪模块,用于跟踪人手的预设关键点;
起点位置确定模块,用于当所述预设关键点的第一位置在预设时间内没有发生变化,将所述第一位置识别为所述人手的起点位置;
移动识别模块,用于识别所述预设关键点的移动;
终端位置确定模块,用于当所述预设关键点的第二位置在预设时间内没有发生变化,将所述第二位置识别为所述人手的终点位置。
进一步的,所述显示控制模块306,包括:
虚拟对象确定模块,用于根据所述人手的第一信息和所述多个虚拟对象的位置,确定被控制的第二虚拟对象;
第一显示控制模块,用于根据所述人手的第一动作控制所述第二虚拟对象的显示位置。
进一步的,所述显示控制模块306,还用于:
当所述人手的第一位置与所述多个虚拟对象中的第一虚拟对象的位置小于第一阈值,则将所述第一虚拟对象从所述第一虚拟对象的位置移动到所述人手的终点位置。
图3所示装置可以执行图1所示实施例的方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。所述技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。
下面参考图4,其示出了适于用来实现本公开实施例的电子设备400的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图4示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储装置408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有电子设备400操作所需的各种程序和数据。处理装置401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
通常,以下装置可以连接至i/o接口405:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置406;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备400与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备400,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,所述计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从rom402被安装。在所述计算机程序被处理装置401执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,所述程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,所述计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入所述电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被所述电子设备执行时,使得所述电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被所述电子设备执行时,使得所述电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对所述单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
1.一种虚拟对象控制方法,其特征在于,包括:
获取视频,所述视频中包括人手;
初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;
获取所述多个虚拟对象的位置;
识别所述视频中的人手,得到人手的第一信息;
识别所述人手的第一动作;
根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。
2.如权利要求1所述的虚拟对象的控制方法,其特征在于,所述初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:
获取多个虚拟对象;
获取所述多个虚拟对象的初始化位置;
根据所述初始化位置,将所述多个虚拟对象显示于所述视频中。
3.如权利要求1所述的虚拟对象的控制方法,其特征在于,所述初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:
识别视频中的人手;
响应于识别到所述人手的第二动作,读取所述多个虚拟对象的配置文件;
根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示于所述视频中。
4.如权利要求3所述的虚拟对象控制方法,其特征在于,所述根据所述多个虚拟对象的配置文件,初始化所述多个虚拟对象,并将所述多个虚拟对象显示于所述视频中,包括:
解析所述多个虚拟对象的配置文件,获取所述多个虚拟对象的获取地址、初始化位置;
根据所述获取地址获取所述虚拟对象,根据所述初始化位置将所述多个虚拟对象显示与所述视频中。
5.如权利要求1所述的虚拟对象的控制方法,其特征在于,所述识别所述视频中的人手,得到人手的第一信息,包括:
识别所述视频中的人手,获取人手的关键点以及人手的第一位置。
6.如权利要求1所述的虚拟对象的控制方法,其特征在于,所述识别所述视频中的人手,获取人手的关键点以及人手的第一位置,包括:
识别所述视频中的人手,获取人手的关键点;
获取所述人手关键点中的预设关键点作为所述人手的第一位置。
7.如权利要求5所述的虚拟对象的控制方法,其特征在于,所述识别所述人手的第一动作,包括:
根据所述人手的关键点,识别所述人手的运动轨迹,其中所述运动轨迹包括所述人手的起点位置以及所述人手的终点位置。
8.如权利要求7所述的虚拟对象的控制方法,其特征在于,所述根据所述人手的关键点,识别所述人手的运动轨迹,包括:
跟踪人手的关键点;
当所述关键点的第一位置在预设时间内没有发生变化,将所述第一位置识别为所述人手的起点位置;
识别所述关键点的移动;
当所述关键点的第二位置在预设时间内没有发生变化,将所述第二位置识别为所述人手的终点位置。
9.如权利要求1所述的虚拟对象的控制方法,其特征在于,所述根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示,包括:
根据所述人手的第一信息和所述多个虚拟对象的位置,确定被控制的第一虚拟对象;
根据所述人手的第一动作控制所述第一虚拟对象的显示位置。
10.如权利要求7所述的虚拟对象的控制方法,其特征在于,所述根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一信息控制所述多个虚拟对象中的至少一个虚拟对象的显示,包括:
当所述人手的第一位置与所述多个虚拟对象中的第二虚拟对象的位置小于第一阈值,则将所述第二虚拟对象从所述第二虚拟对象的位置移动到所述人手的终点位置。
11.一种虚拟对象控制装置,其特征在于,包括:
视频获取模块,用于获取视频,所述视频中包括人手;
初始化模块用于,初始化多个虚拟对象,并将所述多个虚拟对象显示于所述视频中;
虚拟对象位置获取模块,用于获取所述多个虚拟对象的位置;
人手识别模块,用于识别所述视频中的人手,得到人手的第一信息;
动作识别模块,用于识别所述人手的第一动作;
显示控制模块,用于根据所述人手的第一信息、所述多个虚拟对象的位置以及所述人手的第一动作控制所述多个虚拟对象中的至少一个虚拟对象的显示。
12.一种电子设备,包括:
存储器,用于存储非暂时性计算机可读指令;以及
处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现根据权利要求1-10中任意一项所述的虚拟对象的控制方法。
13.一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行权利要求1-10中任意一项所述的虚拟对象的控制方法。
技术总结