视频处理方法和装置、计算机可读存储介质及计算机设备与流程

文档序号:26947327发布日期:2021-10-12 19:51阅读:95来源:国知局
视频处理方法和装置、计算机可读存储介质及计算机设备与流程

1.本公开涉及视频处理技术领域,尤其涉及视频处理方法和装置、计算机可读存储介质及计算机设备。


背景技术:

2.在以往的特效渲染中,通常采用背景分割来将视频帧中的目标对象和背景区域分开,并将视频帧中的背景信息进行替换,上述处理方式较为单调,处理结果的显示效果比较单一。因此,有必要对视频中的特效渲染方式进行改进。


技术实现要素:

3.第一方面,本公开实施例提供一种视频处理方法,所述方法包括:获取视频中包括目标对象的第一视频帧,将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,n为正整数;在获取到所述视频中位于所述第一视频帧之后的一帧第二视频帧的情况下,从所述缓存队列中获取至少一个目标对象,并将获取的目标对象绘制到中间缓存帧上;所述第二视频帧与所述第一视频帧之间的帧间隔大于或等于第一预设帧数,且所述第二视频帧中也包括所述目标对象;对所述第二视频帧与所述中间缓存帧进行合成,得到合成帧,所述合成帧中包括所述第二视频帧中包括的目标对象以及所述中间缓存帧中包括的目标对象。
4.本公开实施例将目标视频帧中的目标对象绘制到中间缓存帧上,并将中间缓存帧与位于所述目标视频帧中的第一视频帧之后的第二视频帧进行合成,以在合成帧上同时显示本体和分身。其中,本体是指第二视频帧在合成之前就包括的目标对象,分身是指中间缓存帧包括的目标对象。相比于相关技术中简单替换背景区域的方式,本公开的视频处理方式能够提高特效渲染过程中的趣味性和特效渲染结果的多样性。
5.在一些实施例中,所述将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,包括:针对每帧目标视频帧,读取第一指针,所述第一指针用于指向所述缓存队列中的当前缓存位置;将所述目标视频帧中的目标对象加入所述第一指针所指向的缓存位置处,并将所述第一指针移动至所述缓存队列中的下一缓存位置。通过采用第一指针,能够快速定位到缓存队列中的当前缓存位置,提高将目标对象加入缓存队列的效率,从而提高视频处理效率,有利于实时输出合成帧。
6.在一些实施例中,所述从所述缓存队列中获取至少一个目标对象,包括:读取第二指针,所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置;从所述第二指针所指向的缓存位置处获取至少一个目标对象,并将所述第二指针移动至下一个待获取的目标对象在所述缓存队列中的缓存位置。通过采用第二指针,能够快速定位到缓存队列中的当前需要获取的目标对象的缓存位置,提高从缓存队列获取目标对象的效率,从而提高视频处理效率,有利于实时输出合成帧。
7.在一些实施例中,在将包含所述第一视频帧以及在所述第一视频帧之后的n帧视
频帧的目标视频帧中的目标对象加入缓存队列之前,所述方法还包括:创建所述缓存队列,并将第一指针和第二指针均设置在所述缓存队列的起始缓存位置处;所述第一指针用于指向所述缓存队列中的当前缓存位置;所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置。
8.在一些实施例中,所述方法还包括:在未获取到所述第二视频帧的情况下,输出空的中间缓存帧。
9.在一些实施例中,所述缓存队列的数量为m;所述将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,包括:在获取到第i个第一视频帧的情况下,将包含所述第i个第一视频帧以及在所述第i个第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入编号为i的缓存队列,其中,第i+1个第一视频帧位于第i个第一视频帧之后,且第i个第一视频帧与第i+1个第一视频帧之间的帧间隔等于第二预设帧数,1≤i≤m,i、m均为正整数;所述在获取到所述视频中位于所述第一视频帧之后的一帧第二视频帧的情况下,从所述缓存队列中获取至少一个目标对象,包括:在获取到所述视频中位于所述第i个第一视频帧之后的一帧第二视频帧的情况下,从编号小于或等于i的各个缓存队列中的每个缓存队列分别获取至少一个目标对象。
10.通过上述方式,能够在一个合成帧上添加多个分身,且不同的分身可以来自不同的目标视频帧,进一步提高了特效渲染过程中的趣味性和特效渲染结果的多样性。
11.在一些实施例中,所述方法还包括:接收携带n的数值的设置指令;基于所述携带n的数值的设置指令对所述n的数值进行设置;和/或接收携带所述第一预设帧数的设置指令;基于所述携带所述第一预设帧数的设置指令对所述第一预设帧数进行设置。
12.在一些实施例中,所述方法还包括:在未接收到所述携带n的数值的设置指令的情况下,将所述n的数值设置为默认数值;和/或在未接收到所述携带所述第一预设帧数的设置指令的情况下,将所述第一预设帧数设置为默认帧数。
13.在一些实施例中,所述将获取的目标对象绘制到中间缓存帧上,包括:对获取的目标对象进行预处理,得到预处理后的目标对象,所述预处理后的目标对象的属性不同于获取的目标对象的属性;将所述预处理后的目标对象绘制到所述中间缓存帧上。通过本实施例,能够使分身获得不同的属性,从而在合成帧中使分身展示出不同的展示效果,进一步提高了特效渲染过程中的趣味性和特效渲染结果的多样性。
14.在一些实施例中,所述将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,包括:将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列;或者从每个所述目标视频帧中分割出所述目标对象,将分割出的所述目标对象加入缓存队列。
15.在一些实施例中,在将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列的情况下,所述从所述缓存队列中获取至少一个目标对象,包括:对所述缓存队列中的视频帧进行目标检测,得到检测结果;基于所述检测结果从所述缓存队列中获取所述目标对象。
16.在一些实施例中,所述基于所述检测结果从所述缓存队列中获取所述目标对象,包括:对所述缓存队列中的目标视频帧进行背景分割,得到所述缓存队列中的目标视频帧中目标对象的掩膜;基于所述缓存队列中的目标视频帧中目标对象的掩膜,对所述缓存队
列中的目标视频帧进行蒙版处理,基于经蒙版处理的结果从所述缓存队列中的目标视频帧中获取目标对象。
17.在一些实施例中,所述将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,包括:针对每帧目标视频帧,在所述缓存队列存满的情况下,在从所述缓存队列中清除最早加入所述缓存队列的目标对象之后,将所述目标视频帧中的目标对象加入缓存队列。通过这种方式,能够及时清理缓存队列,从而能够源源不断地将新的目标对象加入缓存队列,以便在合成帧中不断地显示新的分身。
18.在一些实施例中,所述方法还包括:确定所述合成帧中包括的目标对象中的第一目标对象的动作类别;基于所述第一目标对象的动作类别,为所述第一目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。
19.在一些实施例中,所述方法还包括:识别所述第一视频帧中的字幕信息;基于所述字幕信息,为所述合成帧中包括的所述中间缓存帧中的目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。通过渲染关联对象,可以使合成后的视频帧显示更加丰富的特效,从而进一步提高视频处理结果的多样性和趣味性。
20.在一些实施例中,所述将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,包括:按照每帧所述目标视频帧在所述视频中的位置,将每帧所述目标视频帧中的目标对象依次加入所述缓存队列;所述从所述缓存队列中获取至少一个目标对象,并将获取的目标对象绘制到中间缓存帧上,包括:按照各个目标对象在所述缓存队列中的缓存顺序,从所述缓存队列中获取目标对象,并将获取的目标对象绘制到中间缓存帧上。通过上述方式,使得分身能够重复目标对象在过去某一时间段内的动作,即,使分身的动作相对于本体的动作保持一定的延时,从而获得“延时分身”的特效渲染效果。
21.第二方面,本公开实施例提供一种视频处理装置,所述装置包括:缓存模块,用于获取视频中包括目标对象的第一视频帧,将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,n为正整数;绘制模块,用于在获取到所述视频中位于所述第一视频帧之后的一帧第二视频帧的情况下,从所述缓存队列中获取至少一个目标对象,并将获取的目标对象绘制到中间缓存帧上;所述第二视频帧与所述第一视频帧之间的帧间隔大于或等于第一预设帧数,且所述第二视频帧中也包括所述目标对象;合成模块,用于对所述第二视频帧与所述中间缓存帧进行合成,得到合成帧,所述合成帧中包括所述第二视频帧中包括的目标对象以及所述中间缓存帧中包括的目标对象。
22.本公开实施例将目标视频帧中的目标对象绘制到中间缓存帧上,并将中间缓存帧与位于所述目标视频帧中的第一视频帧之后的第二视频帧进行合成,以在合成帧上同时显示本体和分身。其中,本体是指第二视频帧在合成之前就包括的目标对象,分身是指中间缓存帧包括的目标对象。相比于相关技术中简单替换背景区域的方式,本公开的视频处理方式能够提高特效渲染过程中的趣味性和特效渲染结果的多样性。
23.在一些实施例中,所述缓存模块包括:第一读取单元,用于针对每帧目标视频帧,读取第一指针,所述第一指针用于指向所述缓存队列中的当前缓存位置;第一缓存单元,用于将所述目标视频帧中的目标对象加入所述第一指针所指向的缓存位置处,并将所述第一指针移动至所述缓存队列中的下一缓存位置。通过采用第一指针,能够快速定位到缓存队
列中的当前缓存位置,提高将目标对象加入缓存队列的效率,从而提高视频处理效率,有利于实时输出合成帧。
24.在一些实施例中,所述绘制模块包括:第二读取单元,用于读取第二指针,所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置;目标对象获取单元,用于从所述第二指针所指向的缓存位置处获取至少一个目标对象,并将所述第二指针移动至下一个待获取的目标对象在所述缓存队列中的缓存位置。通过采用第二指针,能够快速定位到缓存队列中的当前需要获取的目标对象的缓存位置,提高从缓存队列获取目标对象的效率,从而提高视频处理效率,有利于实时输出合成帧。
25.在一些实施例中,所述装置还包括:创建模块,用于创建所述缓存队列,并将第一指针和第二指针均设置在所述缓存队列的起始缓存位置处;所述第一指针用于指向所述缓存队列中的当前缓存位置;所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置。
26.在一些实施例中,所述装置还包括:输出单元,用于在未获取到所述第二视频帧的情况下,输出空的中间缓存帧。
27.在一些实施例中,所述缓存队列的数量为m;所述缓存模块用于:在获取到第i个第一视频帧的情况下,将包含所述第i个第一视频帧以及在所述第i个第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入编号为i的缓存队列,其中,第i+1个第一视频帧位于第i个第一视频帧之后,且第i个第一视频帧与第i+1个第一视频帧之间的帧间隔等于第二预设帧数,1≤i≤m,i、m均为正整数;所述绘制模块用于:在获取到所述视频中位于所述第i个第一视频帧之后的一帧第二视频帧的情况下,从编号小于或等于i的各个缓存队列中的每个缓存队列分别获取至少一个目标对象。
28.通过上述方式,能够在一个合成帧上添加多个分身,且不同的分身可以来自不同的目标视频帧,进一步提高了特效渲染过程中的趣味性和特效渲染结果的多样性。
29.在一些实施例中,所述装置还包括:第一接收模块,用于接收携带n的数值的设置指令;第一设置模块,用于基于所述携带n的数值的设置指令对所述n的数值进行设置;和/或第二接收模块,用于接收携带所述第一预设帧数的设置指令;第二设置模块,用于基于所述携带所述第一预设帧数的设置指令对所述第一预设帧数进行设置。
30.在一些实施例中,所述装置还包括:第三设置模块,用于在未接收到所述携带n的数值的设置指令的情况下,将所述n的数值设置为默认数值;和/或第四设置模块,用于在未接收到所述携带所述第一预设帧数的设置指令的情况下,将所述第一预设帧数设置为默认帧数。
31.在一些实施例中,所述绘制模块用于:对获取的目标对象进行预处理,得到预处理后的目标对象,所述预处理后的目标对象的属性不同于获取的目标对象的属性;将所述预处理后的目标对象绘制到所述中间缓存帧上。通过本实施例,能够使分身获得不同的属性,从而在合成帧中使分身展示出不同的展示效果,进一步提高了特效渲染过程中的趣味性和特效渲染结果的多样性。
32.在一些实施例中,所述缓存模块用于:将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列;或者从每个所述目标视频帧中分割出所述目标对象,将分割出的所述目标对象加入缓存队列。
33.在一些实施例中,在将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列的情况下,所述绘制模块用于:对所述缓存队列中的视频帧进行目标检测,得到检测结果;基于所述检测结果从所述缓存队列中获取所述目标对象。
34.在一些实施例中,所述绘制模块用于:对所述缓存队列中的目标视频帧进行背景分割,得到所述缓存队列中的目标视频帧中目标对象的掩膜;基于所述缓存队列中的目标视频帧中目标对象的掩膜,对所述缓存队列中的目标视频帧进行蒙版处理,基于经蒙版处理的结果从所述缓存队列中的目标视频帧中获取目标对象。
35.在一些实施例中,所述缓存模块用于:针对每帧目标视频帧,在所述缓存队列存满的情况下,在从所述缓存队列中清除最早加入所述缓存队列的目标对象之后,将所述目标视频帧中的目标对象加入缓存队列。通过这种方式,能够及时清理缓存队列,从而能够源源不断地将新的目标对象加入缓存队列,以便在合成帧中不断地显示新的分身。
36.在一些实施例中,所述装置还包括:动作类别确定模块,用于确定所述合成帧中包括的目标对象中的第一目标对象的动作类别;第一关联对象渲染模块,用于基于所述第一目标对象的动作类别,为所述第一目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。
37.在一些实施例中,所述装置还包括:字幕信息识别模块,用于识别所述第一视频帧中的字幕信息;第二关联对象渲染模块,用于基于所述字幕信息,为所述合成帧中包括的所述中间缓存帧中的目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。通过渲染关联对象,可以使合成后的视频帧显示更加丰富的特效,从而进一步提高视频处理结果的多样性和趣味性。
38.在一些实施例中,所述缓存模块用于:按照每帧所述目标视频帧在所述视频中的位置,将每帧所述目标视频帧中的目标对象依次加入所述缓存队列;所述绘制模块用于:按照各个目标对象在所述缓存队列中的缓存顺序,从所述缓存队列中获取目标对象,并将获取的目标对象绘制到中间缓存帧上。通过上述方式,使得分身能够重复目标对象在过去某一时间段内的动作,即,使分身的动作相对于本体的动作保持一定的延时,从而获得“延时分身”的特效渲染效果。
39.第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的方法。
40.第四方面,本公开实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一实施例所述的方法。
41.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
42.此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
43.图1是相关技术中的视频处理方式的示意图。
44.图2是本公开实施例的视频处理方法的流程图。
45.图3是本公开实施例的第一指针的示意图。
46.图4是本公开实施例的第二指针的示意图。
47.图5是本公开实施例的整体流程图。
48.图6a和图6b分别是本公开实施例的视频处理结果的示意图。
49.图7是本公开实施例的存在多个缓存队列时的处理方式的示意图。
50.图8是本公开另一实施例的视频处理结果的示意图。
51.图9a和图9b分别是本公开实施例的渲染关联对象的示意图。
52.图10是本公开另一实施例的渲染关联对象的示意图。
53.图11a是本公开实施例的背景分割的示意图。
54.图11b是本公开实施例的蒙版处理的示意图。
55.图12是本公开实施例的视频处理装置的框图。
56.图13是本公开实施例的计算机设备的结构示意图。
具体实施方式
57.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
58.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
59.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
60.为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
61.在相关技术中,一般通过采用背景分割来将视频帧中的目标对象和背景区域分开,并将视频帧中的背景区域进行替换。如图1所示,视频帧101中包括主体区域101a和背景区域101b,其中,主体区域101a是指包括目标对象的区域,所述目标对象可以是人物、动物或者其他特定对象,也可以是人物或动物的某一部分,例如,人脸。通过对视频帧101中的背景区域进行替换,可以得到视频帧102,其中,视频帧102的主体区域102a与视频帧101的主体区域101a相同,视频帧102的背景区域102b与视频帧101的背景区域101b不同。然而,上述处理方式较为单调,常常难以满足用户的创作需求。
62.基于此,本公开实施例提供一种视频处理方法,如图2,所述方法可包括:
步骤201:获取视频中包括目标对象的第一视频帧,将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,n为正整数;步骤202:在获取到所述视频中位于所述第一视频帧之后的一帧第二视频帧的情况下,从所述缓存队列中获取至少一个目标对象,并将获取的目标对象绘制到中间缓存帧上;所述第二视频帧与所述第一视频帧之间的帧间隔大于或等于第一预设帧数,且所述第二视频帧中也包括所述目标对象;步骤203:对所述第二视频帧与所述中间缓存帧进行合成,得到合成帧,所述合成帧中包括所述第二视频帧中包括的目标对象以及所述中间缓存帧中包括的目标对象。
63.本公开实施例的方法既可以用于对实时采集的视频帧进行处理,也可以用于对预先采集并缓存的视频帧进行处理。该方法可应用于具有视频处理能力的终端设备或者服务器。所述终端设备可以包括但不限于手机、平板电脑、个人电脑(personal computer,pc)等设备。所述服务器可以是单台服务器设备,或者是由多台服务器设备构成的服务器集群。在一些实施例中,可以在终端设备上安装用于进行视频处理的应用程序(app)、小程序或者web客户端等软件产品,并由这些软件产品执行本公开实施例的方法。在一种可能的应用场景下,上述软件产品可以是直播类软件产品。主播用户可以在手机上安装客户端(称为主播客户端),通过主播客户端执行本公开实施例的方法,得到合成帧,并将合成帧上传至直播服务器,由直播服务器将合成帧发送至观看直播的用户的客户端(称为观众客户端)。本领域技术人员可以理解,上述应用场景仅为示例性说明,并非用于限制本公开。
64.本公开实施例将目标视频帧中的目标对象绘制到中间缓存帧上,并将中间缓存帧与位于所述目标视频帧中的第一视频帧之后的第二视频帧进行合成,以在合成帧上同时显示本体和分身。其中,本体是指第二视频帧在合成之前就包括的目标对象,分身是指中间缓存帧包括的目标对象。相比于相关技术中简单替换背景区域的方式,本公开的视频处理方式能够提高特效渲染过程中的趣味性和特效渲染结果的多样性。
65.在步骤201中,可选地,目标视频帧可以包括从第一视频帧开始的n+1帧连续的视频帧。假设第一视频帧为视频中的第k帧视频帧,可以将第k帧视频帧、第k+1帧视频帧、第k+2帧视频帧、
……
、第k+n帧视频帧确定为目标视频帧。或者,目标视频帧中包括的各个视频帧也可以是不连续的视频帧。例如,可以从第一视频帧开始,每隔一定的帧间隔获取一次视频帧,将获取的视频帧确定为其中一帧目标视频帧,直到获取到n+1帧目标视频帧。又例如,可以获取位于第一视频帧之后,且帧编号满足预设条件的视频帧,将获取的视频帧确定为其中一帧目标视频帧,直到获取到n+1帧目标视频帧。所述预设条件可以基于实际需求设置,例如,设置为第一视频帧的帧编号的整数倍,或者设置为偶数等。再例如,可以从第一视频帧开始,获取n+1帧清晰度满足预设清晰度条件的视频帧作为目标视频帧。再例如,可以将从第一视频帧开始的p帧视频帧中随机选取n帧视频帧,将第一视频帧与选取的n帧视频帧确定为目标视频帧,其中,p为正整数且p大于n。除了以上列举的几种情况之外,还可以采用其他方式确定目标视频帧,此处不再一一列举。
66.在确定目标视频帧之后,可以直接将各个目标视频帧加入缓存队列,也可以先从各个目标视频帧中分别分割出目标对象,并将分割出的目标对象加入缓存队列。所述缓存队列是用于对目标对象进行缓存的队列,在一些实施例中,所述缓存队列为循环队列。
67.可以将首次检测到的包括目标对象的视频帧作为第一视频帧,也可以将在接收到
视频处理指令之后首次检测到的包括目标对象的视频帧作为第一视频帧,还可以将指定编号范围内检测到的包括目标对象的视频帧作为第一视频帧,或者基于其他条件确定第一视频帧。
68.在一些实施例中,可以按照每帧所述目标视频帧在所述视频中的位置,将每帧所述目标视频帧中的目标对象依次加入所述缓存队列。每帧目标视频帧都可对应一个帧编号或者时间戳,用于唯一标识该目标视频帧。可以基于目标视频帧的帧编号或者时间戳,依次将各个目标帧视频帧中的目标对象加入缓存队列。例如,先将编号为i1的目标视频帧加入缓存队列,再将编号为i2的目标视频帧加入缓存队列,然后将编号为i3的目标视频帧加入缓存队列,以此类推,其中,i1<i2<i3。
69.目标视频帧中除所述第一视频帧以外的各个视频帧可以部分或全部包括目标对象,本公开对此不做限制。例如,假设目标视频帧包括帧编号为k到k+n的连续n+1帧视频帧,其中帧编号为k的视频帧为第一视频帧,则帧编号为k+1、k+2、
……
、k+n的视频帧可以均包括目标对象;或者,帧编号k+1的视频帧包括目标对象,帧编号k+2的视频帧不包括目标对象,帧编号k+3、
……
、k+n的视频帧均包括目标对象。包括目标对象的目标视频帧中目标对象的数量可以大于或等于1。
70.为了便于确定目标对象在缓存队列中的缓存位置,可以通过第一指针is来指示缓存队列中的当前缓存位置。具体而言,针对每帧目标视频帧,读取第一指针,所述第一指针用于指向所述缓存队列中的当前缓存位置。将所述目标视频帧中的目标对象加入所述第一指针所指向的缓存位置处,并将所述第一指针移动至所述缓存队列中的下一缓存位置。
71.如图3所示,以目标视频帧包括从第一视频帧开始的连续的n+1帧视频帧为例,在t1时刻,缓存队列中已缓存有帧编号为1的视频帧和帧编号为2的视频帧,缓存队列中的当前缓存位置如指针is1所示,待缓存的目标视频帧包括编号大于或等于3的视频帧。则在t2时刻,将帧编号为3的视频帧缓存至缓存队列中is1所指向的缓存位置处,并将指针is1移动到缓存队列中的下一缓存位置,如指针is2所示。
72.在步骤202中,在获取到所述视频中位于所述第一视频帧之后的一帧第二视频帧的情况下,可以从所述缓存队列中获取至少一个目标对象。例如,可以每次仅获取一个目标对象。又例如,可以每次从所述缓存队列中获取属于同一帧目标视频帧中的目标对象。或者,可以每次从所述缓存队列中获取目标视频帧中相邻的至少两帧目标视频帧中的目标对象。还可以每次从所述缓存队列中获取指定数量个目标对象,无论获取的目标对象属于哪个视频帧。除了以上列举的情况之外,还可以采用其他方式获取目标对象,此处不再一一举例。
73.在将获取的目标对象绘制到中间缓存帧上时,可以首先新建一个空的中间缓存帧,然后将获取的目标对象复制到空的中间缓存帧中。绘制的位置可以与目标对象在目标视频帧中的位置相同,也可以不同。例如,可以随机将获取的目标对象绘制到空的中间缓存帧中,或者将获取的目标对象绘制到空的中间缓存帧中默认的或指定的绘制位置处。在每次从所述缓存队列中获取属于同一帧目标视频帧中的目标对象的实施例中,如果目标视频帧中不包括目标对象,可以直接输出空的中间缓存帧。
74.一个中间缓存帧上可以绘制一个或多个目标对象,例如,可以将属于同一帧目标视频帧的各个目标对象均绘制到同一个中间缓存帧上,也可以在一个中间缓存帧上绘制指
定数量个目标对象,并在中间缓存帧上绘制的目标对象达到所述指定数量的情况下,将其他的目标对象绘制到新的中间缓存帧上。
75.在步骤201中按照每帧所述目标视频帧在所述视频中的位置,将每帧所述目标视频帧中的目标对象依次加入所述缓存队列的情况下,本步骤可以按照各个目标对象在所述缓存队列中的缓存顺序,从所述缓存队列中获取目标对象,并将获取的目标对象绘制到中间缓存帧上。
76.可以在获取到第二视频帧的情况下,才执行上述将获取的目标对象绘制到中间缓存帧上的操作。其中,第二视频帧与第一视频帧之间的帧间隔(即第一预设帧数)为d。假设第k帧视频帧为第一视频帧,则第二视频帧包括从第k+d帧视频帧开始的至少一帧视频帧。在一些实施例中,每获取到一帧第二视频帧,可以从缓存队列中获取至少一个目标对象,并将获取的目标对象绘制到中间缓存帧上。在每次从所述缓存队列中获取属于同一帧目标视频帧中的目标对象的实施例中,在获取到第k+d帧视频帧的情况下,可以从缓存队列中取出第k帧视频帧包括的各个目标对象,将第k帧视频帧包括的各个目标对象均绘制到中间缓存帧1上;在获取到第k+d+1帧视频帧的情况下,可以从缓存队列中取出第k+1帧视频帧包括的各个目标对象,将第k+1帧视频帧包括的各个目标对象均绘制到中间缓存帧2上;以此类推。
77.上述中间缓存帧1和中间缓存帧2可以是相同的中间缓存帧。例如,每一次获取的目标对象都绘制到同一帧中间缓存帧上,以便在第i帧合成帧上显示的分身包括在第i

1帧合成帧上显示的所有分身。又例如,在将目标对象绘制到中间缓存帧上之前,可以清除中间缓存帧上已有的部分或全部目标对象。或者,上述中间缓存帧1和中间缓存帧2也可以是不同的中间缓存帧。这样,每一帧合成帧上显示的分身都不相同。
78.在步骤201中直接包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列的情况下,本步骤可以从缓存队列中获取至少一帧目标视频帧,从获取的视频帧中分割出目标对象,并将分割出的目标对象绘制到中间缓存帧上。在步骤201中将分割出的目标对象加入缓存队列的情况下,本步骤可以直接从缓存队列中获取至少一个目标对象。
79.为了便于将目标对象绘制到中间缓存帧上,可以通过第二指针ir来指示当前待取出的目标对象在所述缓存队列中的缓存位置。具体而言,可以读取第二指针,所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置;从所述第二指针所指向的缓存位置处获取至少一个目标对象,并将所述第二指针移动至下一个待获取的目标对象在所述缓存队列中的缓存位置。
80.如图4所示,仍以目标视频帧包括从第一视频帧开始的连续的n+1帧视频帧为例。在t1时刻,第二指针如图中ir1所示,则从缓存队列中获取编号为3的目标视频帧,并将编号为3的目标视频帧中的目标对象(称为目标对象3)绘制到中间缓存帧1上。在t2时刻,由于ir1所指示的位置处的目标视频帧已被取出,因此,将第二指针移动到下一个待获取的目标对象在所述缓存队列中的缓存位置,即ir2所指向的位置处,并将编号为4的目标视频帧中的目标对象(称为目标对象4)绘制到中间缓存帧2上。
81.在一些实施例中,如果在获取到第一视频帧的情况下不存在缓存队列,还可以创建缓存队列,并将第一指针is和第二指针ir均设置在所述缓存队列的起始缓存位置处,即第一指针is和第二指针ir所指向的缓存位置均为缓存队列的起始缓存位置。本公开实施例
的整体流程如图5所示,由于每帧目标视频帧的处理方式类似,此处以其中一帧目标视频帧的处理过程为例进行说明。
82.在步骤501中,输入目标视频帧,该目标视频帧中可以包含第一视频帧以及在所述第一视频帧之后的n帧视频帧。
83.在步骤502中,判断是否已存在缓存队列。如果是,执行步骤504,否则执行步骤503。
84.在步骤503中,创建长度为n的缓存队列,并将第一指针is和第二指针ir均置为指向缓存队列的起始缓存位置处。
85.在步骤504中,将输入的视频帧保存到缓存队列的is处,并将is后移。
86.在步骤505中,判断视频帧与第一视频帧之间的帧间隔是否大于或等于预设帧数d。如果是,执行步骤506,否则执行步骤507。
87.在步骤506中,将缓存于ir处的视频帧中的目标对象绘制到中间缓存帧中,并执行步骤508。
88.在步骤507中,返回空的中间缓存帧。
89.在步骤508中,输出中间缓存帧。
90.在步骤203中,可以对所述第二视频帧与所述中间缓存帧进行合成。可以将每一帧第二视频帧与至少一帧中间缓存帧进行合成。第二视频帧在合成之前就可以包括目标对象。目标对象采用不同的缓存方式缓存到缓存队列,和/或采用不同的绘制方式绘制到中间缓存帧上,则在合成帧中显示的分身效果是不同的。为了便于说明,下面以每个目标视频帧中均包括一个目标对象为例,对几种可能的合成效果进行举例。
91.如图6a所示,f1、f2、f3和f4表示合成前的视频帧,f2、f3和f4表示合成帧。601、602、603和604分别表示对应的第二视频帧中的本体,c1、c2和c3表示分身。为了便于区分,在图中不同的本体显示出不同的颜色。假设将f1作为第一视频帧,并假设第一预设帧数为1,即从f2开始的视频帧为第二视频帧。也就是说,每个第二视频帧都与该第二视频帧的上一个视频帧进行合成。可以看出,f1中的本体601作为f2中本体602的分身c1,f2中本体602作为f3中本体603的分身c2,f3中本体603作为f4中本体604的分身c3。即,每一帧视频帧中的目标对象均作为下一帧视频帧中的分身,各个第二视频帧上的分身重复本体在上一帧中的动作,即合成帧上分身的动作与本体的动作保持1帧的延时。
92.如图6b所示,每个第二视频帧都与该第二视频帧之前的所有目标视频帧进行合成。可以看出,f2中包括的分身c1为f1中的本体,f3中包括的分身为f1中的本体以及f2中的本体,f4中包括的分身为f1中的本体、f2中的本体以及f3中的本体。
93.除了上述效果之外,还可以获得其他的分身渲染效果,此处不再一一列举。
94.在一些实施例中,针对每帧目标视频帧,在所述缓存队列存满的情况下,在从所述缓存队列中清除最早加入所述缓存队列的目标对象之后,将所述目标视频帧中的目标对象加入缓存队列。如图7所示,以直接将视频帧加入缓存队列的情况为例,各个视频帧按照编号从小到大的顺序依次加入缓存队列,并假设缓存队列最多可以缓存4个视频帧。在t1时刻需要缓存第5帧视频帧,但此时缓存队列已存满,因此,在t2时刻从缓存队列中清除编号为1的视频帧,并在t3时刻将编号为5的视频帧加入缓存队列。这样,能够使后续合成的合成帧中分身与本体之间的动作始终保持固定的延时。假设第一预设帧数为5,则在编号为6的视
频帧合成后得到的合成帧中,分身重复编号为1的视频帧中的动作,在编号为7的视频帧合成后得到的合成帧中,分身重复编号为2的视频帧中的动作,以此类推。即,合成帧中分身与本体之间的动作延时始终保持为5。
95.在另一些实施例中,也可以仅在缓存队列未存满的情况下才将目标视频帧中的目标对象依次加入缓存队列,而在缓存队列存满的情况下不再将目标对象加入缓存队列,并在缓存队列中的目标对象全部被取出之后终止本公开实施例的视频处理方法。这样,能够合成部分包括分身的合成帧。仍假设第一预设帧数为5,并假设缓存长度为2,且当前已缓存的视频帧包括编号为1的视频帧和编号为2的视频帧。则在本实施例中,在编号为6的视频帧合成后得到的合成帧中,分身重复编号为1的视频帧中的动作,在编号为7的视频帧合成后得到的合成帧中,分身重复编号为2的视频帧中的动作。由于两次合成之后缓存队列中的视频帧已全部取出,因此从编号为8的视频帧开始的各个视频帧均无需进行合成。
96.在所述缓存队列为循环队列的情况下,可以循环获取队列中的视频帧,以使后续合成的合成帧中的分身周期性地重复一组动作。仍假设第一预设帧数为5,并假设缓存长度为2,且当前已缓存的目标视频帧包括编号为1的视频帧和编号为2的视频帧。则在本实施例中,在编号为6的视频帧合成后得到的合成帧中,分身重复编号为1的视频帧中的动作;在编号为7的视频帧合成后得到的合成帧中,分身重复编号为2的视频帧中的动作;在编号为8的视频帧合成后得到的合成帧中,分身重复编号为1的视频帧中的动作;在编号为9的视频帧合成后得到的合成帧中,分身重复编号为2的视频帧中的动作;以此类推。
97.在一些实施例中,缓存队列的数量为m。在获取到第i个第一视频帧的情况下,将包含所述第i个第一视频帧以及在所述第i个第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入编号为i的缓存队列,其中,第i+1个第一视频帧位于第i个第一视频帧之后,且第i个第一视频帧与第i+1个第一视频帧之间的帧间隔等于第二预设帧数,1≤i≤m,i、m均为正整数。在获取到所述视频中位于所述第i个第一视频帧之后的一帧第二视频帧的情况下,从编号小于或等于i的各个缓存队列中的每个缓存队列分别获取至少一个目标对象。
98.不同于图6a所示的实施例,图8示出了缓存队列的数量为2的情况,视频帧f1为第1个第一视频帧,视频帧f2为第2个第一视频帧,即第一预设帧数和第二预设帧数均为1。对于视频帧f1而言,从视频帧f2开始的各视频帧均为第二视频帧;对于视频帧f2而言,从视频帧f3开始的各视频帧均为第二视频帧。因此,在获取到视频帧f1之后,将视频帧f1加入缓存队列1。在获取到视频帧f2的情况下,从缓存队列1中取出f1,从而与f2合成得到视频帧f2。同时,将视频帧f2分别加入缓存队列1和缓存队列2。在获取到视频帧f3的情况下,从缓存队列1中取出f2,并从缓存队列2中取出f1,从而与f3合成得到视频帧f3。同时,将视频帧f3分别加入缓存队列1和缓存队列2。在获取到视频帧f4的情况下,从缓存队列1中取出f3,并从缓存队列2中取出f2,从而与f4合成得到视频帧f4。
99.上述n、第一预设帧数、第二预设帧数以及缓存队列的数量均可以通过指令设置,所述指令可以由用户发送。具体来说,可以接收设置指令,所述设置指令中携带以下至少任一信息:所述n的数值、第一预设帧数、第二预设帧数以及缓存队列的数量;基于所述设置指令对相应的数值进行设置。进一步地,还可以预先存储上述各项信息的默认值。在未接收到对对应信息的设置指令的情况下,将对应信息设置为默认值。
100.在一些实施例中,中间缓存帧中目标对象的属性与该目标对象在目标视频帧中的
属性相同。所述属性可包括但不限于目标对象的位置、尺寸、色彩、透明度、阴影、角度、朝向、动作等中的至少一者。在另一些实施例中,中间缓存帧中目标对象的属性与该目标对象在目标视频帧中的属性也可以不同。可以通过属性更改处理来更改中间缓存帧中的目标对象的属性。所述属性更改处理包括但不限于以下至少一者:位移、旋转、翻转、缩放、色彩处理、透明度处理、阴影处理。具体来说,可以先对获取的目标对象进行预处理,再将预处理后的目标对象渲染到所述中间缓存帧。或者,也可以在将目标对象渲染到所述中间缓存帧之后,再对中间缓存帧中的目标对象进行属性更改处理。预处理后的目标对象的属性不同于从缓存队列中获取的目标对象的属性,因此通过预处理可以使目标对象呈现出不同的展示效果。
101.在一些实施例中,还可以为各个分身渲染关联对象。可选地,可以确定所述合成帧中包括的目标对象中的第一目标对象的动作类别;基于所述第一目标对象的动作类别,为所述第一目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。所述关联对象可以是与分身的动作相关的道具。所述第一目标对象可以是合成帧中的本体,也可以是合成帧中的分身,第一目标对象的数量本公开实施例不做限制。如图9a所示,在识别到分身902执行的动作为踢球动作的情况下,可以为分身902添加足球道具903。当然,还可以为本体901添加关联道具(图中未示出)。也可以随机地为不同的分身渲染不同的关联对象,以便对各个分身进行区分。所述关联对象可以是服饰,包括但不限于帽子、衣服、耳环、手镯、鞋子、胡须、眼镜等中的一种或多种。如图9b所示,可以为不同的分身分别添加帽子904、眼镜905、胡须906等关联对象。
102.在一些实施例中,由于字幕往往与视频中目标对象的信息相关,还可以识别所述第一视频帧中的字幕信息;基于所述字幕信息,为所述合成帧中包括的所述中间缓存帧中的目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。具体来说,可以识别出字幕信息中的关键词,所述关键词可以是预先加入关键词库的词语。可以建立所述关键词与关联对象之间的关联关系,在识别到关键词的情况下,基于所述关联关系从存储关联对象的数据库中查找对应的关联对象。如图10所示,第一视频帧中包括目标对象1002,且在第一视频帧中识别出的字幕信息1001中包括关键词“扇子”,第二视频帧中包括本体1004,本体1004对应的分身1003从第一视频帧中获取,则可以为目标对象1002对应的分身1003渲染关联对象扇子1005,以使合成帧中包括分身1003、本体1004以及扇子1005。
103.在上述渲染关联对象的实施例中,可以将关联对象也渲染到中间缓存帧中,并在进行视频帧合成时将渲染有关联对象的中间缓存帧与第二视频帧进行合成。或者,也可以在将未渲染关联对象的中间缓存帧与第二视频帧进行合成之后,将关联对象渲染到合成帧中。还可以将关联对象渲染到未渲染目标对象的缓存帧中,并将中间缓存帧、渲染有关联对象的缓存帧以及第二视频帧进行合成。通过渲染关联对象,可以使合成后的视频帧显示更加丰富的特效,从而进一步提高视频处理结果的多样性和趣味性。
104.在一些实施例中,可以对所述缓存队列中的视频帧进行目标检测,得到检测结果,并基于所述检测结果从所述缓存队列中获取所述目标对象。具体来说,可以对所述缓存队列中的目标视频帧进行背景分割,得到所述缓存队列中的目标视频帧中目标对象的掩膜(mask);基于所述缓存队列中的目标视频帧中目标对象的掩膜,对所述缓存队列中的目标视频帧进行蒙版处理,基于经蒙版处理的结果从所述缓存队列中的目标视频帧中获取目标
对象。目标对象的掩膜用于从目标视频帧中提取目标对象,一般与目标对象具有相同尺寸和形状。在进行蒙版处理时,可以在目标视频帧上覆盖一层图层,图层包括透明区域和不透明区域,可以将目标对象的掩膜对应的区域设置为透明区域,将除目标对象的掩膜之外的区域设置为不透明区域。将透明区域截取出来,即可得到目标对象。如图11a所示,视频帧中的目标对象1101对应掩膜1102。蒙版处理结果如图11b所示。
105.相关技术中的背景分割一般需要通过设置绿幕,基于视频帧中各个像素点的颜色,对视频帧进行前景(目标对象)和背景的分割。这种背景分割方式容易因为目标对象自身的绿色像素点而导致分割错误,分割准确性较低,且无法实现随时随地的视频特效制作。本公开实施例通过目标检测实现前景和背景的分割,无需设置绿幕,提高了分割准确性,同时便于用户通过手机等终端设备随时随地实现视频处理。
106.通过蒙版处理能够获得视频帧中目标对象的信息。然后,可以依据不同效果的不同需求和参数,对获取到的目标对象进行各种操作,如位移、缩放、缓存,并将处理的结果渲染到中间缓存帧中。本步骤的具体操作内容会根据特效的不同而有所变化。但主要思路就是在对截取出的主体人物图像进行操作来实现不同的效果。通过对这些操作的修改,将来也可以创造出更多不同的渲染特效。
107.本公开涉及增强现实领域,通过获取现实环境中的目标对象的图像信息,进而借助各类视觉相关算法实现对目标对象的相关特征、状态及属性进行检测或识别处理,从而得到与具体应用匹配的虚拟与现实相结合的ar效果。示例性的,目标对象可涉及与人体相关的脸部、肢体、手势、动作等,或者与物体相关的标识物、标志物,或者与场馆或场所相关的沙盘、展示区域或展示物品等。视觉相关算法可涉及视觉定位、slam、三维重建、图像注册、背景分割、对象的关键点提取及跟踪、对象的位姿或深度检测等。具体应用不仅可以涉及跟真实场景或物品相关的导览、导航、讲解、重建、虚拟效果叠加展示等交互场景,还可以涉及与人相关的特效处理,比如妆容美化、肢体美化、特效展示、虚拟模型展示等交互场景。可通过卷积神经网络,实现对目标对象的相关特征、状态及属性进行检测或识别处理。上述卷积神经网络是基于深度学习框架进行模型训练而得到的网络模型。
108.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
109.如图12所示,本公开实施例还提供一种视频处理装置,所述装置包括:缓存模块1201,用于获取视频中包括目标对象的第一视频帧,将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入缓存队列,n为正整数;绘制模块1202,用于在获取到所述视频中位于所述第一视频帧之后的一帧第二视频帧的情况下,从所述缓存队列中获取至少一个目标对象,并将获取的目标对象绘制到中间缓存帧上;所述第二视频帧与所述第一视频帧之间的帧间隔大于或等于第一预设帧数,且所述第二视频帧中也包括所述目标对象;合成模块1203,用于对所述第二视频帧与所述中间缓存帧进行合成,得到合成帧,所述合成帧中包括所述第二视频帧中包括的目标对象以及所述中间缓存帧中包括的目标对象。
110.在一些实施例中,所述缓存模块包括:第一读取单元,用于针对每帧目标视频帧,读取第一指针,所述第一指针用于指向所述缓存队列中的当前缓存位置;第一缓存单元,用于将所述目标视频帧中的目标对象加入所述第一指针所指向的缓存位置处,并将所述第一指针移动至所述缓存队列中的下一缓存位置。通过采用第一指针,能够快速定位到缓存队列中的当前缓存位置,提高将目标对象加入缓存队列的效率,从而提高视频处理效率,有利于实时输出合成帧。
111.在一些实施例中,所述绘制模块包括:第二读取单元,用于读取第二指针,所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置;目标对象获取单元,用于从所述第二指针所指向的缓存位置处获取至少一个目标对象,并将所述第二指针移动至下一个待获取的目标对象在所述缓存队列中的缓存位置。通过采用第二指针,能够快速定位到缓存队列中的当前需要获取的目标对象的缓存位置,提高从缓存队列获取目标对象的效率,从而提高视频处理效率,有利于实时输出合成帧。
112.在一些实施例中,所述装置还包括:创建模块,用于创建所述缓存队列,并将第一指针和第二指针均设置在所述缓存队列的起始缓存位置处;所述第一指针用于指向所述缓存队列中的当前缓存位置;所述第二指针用于指向当前待获取的目标对象在所述缓存队列中的缓存位置。
113.在一些实施例中,所述装置还包括:输出单元,用于在未获取到所述第二视频帧的情况下,输出空的中间缓存帧。
114.在一些实施例中,所述缓存队列的数量为m;所述缓存模块用于:在获取到第i个第一视频帧的情况下,将包含所述第i个第一视频帧以及在所述第i个第一视频帧之后的n帧视频帧的目标视频帧中的目标对象加入编号为i的缓存队列,其中,第i+1个第一视频帧位于第i个第一视频帧之后,且第i个第一视频帧与第i+1个第一视频帧之间的帧间隔等于第二预设帧数,1≤i≤m,i、m均为正整数;所述绘制模块用于:在获取到所述视频中位于所述第i个第一视频帧之后的一帧第二视频帧的情况下,从编号小于或等于i的各个缓存队列中的每个缓存队列分别获取至少一个目标对象。
115.通过上述方式,能够在一个合成帧上添加多个分身,且不同的分身可以来自不同的目标视频帧,进一步提高了特效渲染过程中的趣味性和特效渲染结果的多样性。
116.在一些实施例中,所述装置还包括:第一接收模块,用于接收携带n的数值的设置指令;第一设置模块,用于基于所述携带n的数值的设置指令对所述n的数值进行设置;和/或第二接收模块,用于接收携带所述第一预设帧数的设置指令;第二设置模块,用于基于所述携带所述第一预设帧数的设置指令对所述第一预设帧数进行设置。
117.在一些实施例中,所述装置还包括:第三设置模块,用于在未接收到所述携带n的数值的设置指令的情况下,将所述n的数值设置为默认数值;和/或第四设置模块,用于在未接收到所述携带所述第一预设帧数的设置指令的情况下,将所述第一预设帧数设置为默认帧数。
118.在一些实施例中,所述绘制模块用于:对获取的目标对象进行预处理,得到预处理后的目标对象,所述预处理后的目标对象的属性不同于获取的目标对象的属性;将所述预处理后的目标对象绘制到所述中间缓存帧上。通过本实施例,能够使分身获得不同的属性,从而在合成帧中使分身展示出不同的展示效果,进一步提高了特效渲染过程中的趣味性和
特效渲染结果的多样性。
119.在一些实施例中,所述缓存模块用于:将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列;或者从每个所述目标视频帧中分割出所述目标对象,将分割出的所述目标对象加入缓存队列。
120.在一些实施例中,在将包含所述第一视频帧以及在所述第一视频帧之后的n帧视频帧的目标视频帧加入缓存队列的情况下,所述绘制模块用于:对所述缓存队列中的视频帧进行目标检测,得到检测结果;基于所述检测结果从所述缓存队列中获取所述目标对象。
121.在一些实施例中,所述绘制模块用于:对所述缓存队列中的目标视频帧进行背景分割,得到所述缓存队列中的目标视频帧中目标对象的掩膜;基于所述缓存队列中的目标视频帧中目标对象的掩膜,对所述缓存队列中的目标视频帧进行蒙版处理,基于经蒙版处理的结果从所述缓存队列中的目标视频帧中获取目标对象。
122.在一些实施例中,所述缓存模块用于:针对每帧目标视频帧,在所述缓存队列存满的情况下,在从所述缓存队列中清除最早加入所述缓存队列的目标对象之后,将所述目标视频帧中的目标对象加入缓存队列。通过这种方式,能够及时清理缓存队列,从而能够源源不断地将新的目标对象加入缓存队列,以便在合成帧中不断地显示新的分身。
123.在一些实施例中,所述装置还包括:动作类别确定模块,用于确定所述合成帧中包括的目标对象中的第一目标对象的动作类别;第一关联对象渲染模块,用于基于所述第一目标对象的动作类别,为所述第一目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。
124.在一些实施例中,所述装置还包括:字幕信息识别模块,用于识别所述第一视频帧中的字幕信息;第二关联对象渲染模块,用于基于所述字幕信息,为所述合成帧中包括的所述中间缓存帧中的目标对象渲染关联对象,并在所述合成帧中显示所述关联对象。通过渲染关联对象,可以使合成后的视频帧显示更加丰富的特效,从而进一步提高视频处理结果的多样性和趣味性。
125.在一些实施例中,所述缓存模块用于:按照每帧所述目标视频帧在所述视频中的位置,将每帧所述目标视频帧中的目标对象依次加入所述缓存队列;所述绘制模块用于:按照各个目标对象在所述缓存队列中的缓存顺序,从所述缓存队列中获取目标对象,并将获取的目标对象绘制到中间缓存帧上。通过上述方式,使得分身能够重复目标对象在过去某一时间段内的动作,即,使分身的动作相对于本体的动作保持一定的延时,从而获得“延时分身”的特效渲染效果。
126.在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
127.本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。
128.图13示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1301、存储器1302、输入/输出接口1303、通信接口1304和总线1305。其中处理器1301、存储器1302、输入/输出接口1303和通信接口1304通过总线1305实
现彼此之间在设备内部的通信连接。
129.处理器1301可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。处理器1301还可以包括显卡,所述显卡可以是nvidia titan x显卡或者1080ti显卡等。
130.存储器1302可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1302可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1302中,并由处理器1301来调用执行。
131.输入/输出接口1303用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
132.通信接口1304用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
133.总线1305包括一通路,在设备的各个组件(例如处理器1301、存储器1302、输入/输出接口1303和通信接口1304)之间传输信息。
134.需要说明的是,尽管上述设备仅示出了处理器1301、存储器1302、输入/输出接口1303、通信接口1304以及总线1305,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
135.本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。
136.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
137.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
138.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,
或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
139.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
140.以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1