视频帧的处理方法、装置、存储介质及电子装置与流程

文档序号:17377015发布日期:2019-04-12 23:25阅读:175来源:国知局
视频帧的处理方法、装置、存储介质及电子装置与流程

本发明涉及通信领域,具体而言,涉及一种视频帧的处理方法、装置、存储介质及电子装置。



背景技术:

随着智能终端的发展,人们对智能终端的一些功能的要求也越来越高,其中,对于终端的摄像头采集的内容或者对于其他输入的视频流的实时处理的需求也越来越多。例如,随着移动智能机的普及,移动直播已经成为一种越来越普遍的娱乐形式。下面以此为例对相关技术进行说明:

为丰富直播形式,主要有美颜以及一些特征识别需求,直播时需要实时进行人脸识别,手势识别等工作。直播要求实时检测人脸,并结合检测到的人脸特征进行大眼、瘦脸等美颜加工处理。一般摄像头图像渲染是一个独立的线程,根据人脸检测是否在渲染线程中执行,将人脸检测分为同步检测和异步检测两种方案。同步方案是将人脸检测放在渲染线程中执行,等到检测结果出来后再对数据加工处理后输出;异步方案中,人脸检测在一个独立的线程中,渲染时结合当前的人脸检测结果与当前帧加工处理输出。

需要说明的是,在上述的方案中会存在如下几个问题:

在同步方案中,若使用性能较差的机器,会出现检测耗时较长,以及渲染卡顿的问题。

在异步方案中,由于检测结束时对应的帧可能已经输出了,如果结合当前帧做检测之后的处理时(即,渲染,包括美颜处理以及将美颜后帧输出到显示屏上的处理)会存在位置差异,并且,在快速运动时尤其明显。如,一帧人脸检测需要10ms的时间,而将一帧摄像头画面输出到屏幕只需要5ms的时间。在摄像头数据输出后,分别送去做人脸检测和渲染,由于渲染时间较短,当前帧的人脸检测尚未完成,能拿到的只有上一帧的人脸检测结果,因此只能利用上一帧的人脸结果来做美颜处理,这就造成了人脸检测结果与渲染帧的不匹配,如图1所示,第n-1帧输出到屏幕时只能结合第n-2帧的人脸检测结果做美颜处理。一般情况下,当前后两帧的画面变化不大时,即前后两帧人脸位置变化不大时,预览的时候并无太大影响,但当前后帧人脸位置差别加大时,在预览的时候能观察到较明显的错位。由此可知,采用相关技术中的视频帧的处理方案,会存在检测结果与渲染帧不匹配的问题。

针对相关技术中存在的上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种视频帧的处理方法、装置、存储介质及电子装置,以至少解决相关技术中存在的检测结果与渲染帧不匹配的问题。

根据本发明的一个实施例,提供了一种视频帧的处理方法,包括:获取并缓存视频流的第一视频帧;对所述第一视频帧进行检测处理,得到检测结果;根据所述检测结果对所述第一视频帧的帧数据进行修改,得到目标帧;在获取到所述第一视频帧的下一帧的情况下,输出所述目标帧。

根据本发明的另一个实施例,提供了一种视频帧的处理装置,包括:获取模块,用于获取并缓存视频流的第一视频帧;检测模块,用于对所述第一视频帧进行检测处理,得到检测结果;修改模块,用于根据所述检测结果对所述第一视频帧的帧数据进行修改,得到目标帧;输出模块,用于在获取到所述第一视频帧的下一帧的情况下,输出所述目标帧。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述方法实施例中的步骤。

通过本发明,采用的是不立即输出采集到的视频流中的视频帧,而是先缓存起来,结合检测结果做了修改之后再输出,即,推迟一帧再输出,以达到检测结果和渲染帧相匹配的目的,有效解决了相关技术中存在的检测结果与渲染帧不匹配的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是相关技术中的人脸检测与图像渲染的操作示意图;

图2是本发明实施例的视频帧的处理方法的移动终端的硬件结构框图;

图3是根据本发明实施例的视频帧的处理方法的流程图;

图4是根据本发明实施例的人脸美颜的示意图;

图5是根据本发明实施例的视频帧的处理装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

本申请实施例中所提供的方法可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图2是本发明实施例的视频帧的处理方法的移动终端的硬件结构框图。如图2所示,移动终端可以包括一个或多个(图2中仅示出一个)处理器202(处理器202可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器204,可选地,上述移动终端还可以包括用于通信功能的传输设备206以及输入输出设备208。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。

存储器204可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的视频帧的处理方法对应的计算机程序,处理器202通过运行存储在存储器204内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置206包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置206可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种可以运行于上述移动终端的视频帧的处理方法,图3是根据本发明实施例的视频帧的处理方法的流程图,如图3所示,该流程包括如下步骤:

步骤s302,获取并缓存视频流的第一视频帧;

步骤s304,对所述第一视频帧进行检测处理,得到检测结果;

步骤s306,根据所述检测结果对所述第一视频帧的帧数据进行修改,得到目标帧;

步骤s308,在获取到所述第一视频帧的下一帧的情况下,输出所述目标帧。

上述各步骤可以是由移动终端所执行的,其中,在上述实施例中,视频流可以是由终端的摄像头所采集到的,还可以是输入的视频流。

在上述实施例中,采用的是不立即输出采集到的视频流中的视频帧,而是先缓存起来,结合检测结果做了修改之后再输出,即,推迟一帧再输出,以达到检测结果和渲染帧相匹配的目的,相对于现有技术中的将采集到的视频流立即输出到屏幕而不会有缓存处理的方案,采用本发明中的方案可以有效解决相关技术中存在的检测结果与渲染帧不匹配的问题。

在一个可选的实施例中,在获取并缓存所述第一视频帧之前,所述方法还包括:创建包括两个帧缓存framebuffer的数组,其中,所述两个framebuffer分别用于缓存获取到的两个相邻的视频帧。在本实施例中,创建是一个包含两个framebuffer的数组,该数组可以循环使用,记为双framebuffer数组,在该数组中可以设置两个变量,分别为当前帧cur_fbo_idx,前一帧pre_fbo_idx,这两个变量可以分别指向数据流的相邻的两帧在数组中的索引。创建包括两个framebuffer的数组是较为优选的方式,这是因为当数组包括的帧缓存过多时,可能会导致检测耗时过大,超出帧率周期,无法实现实时检测和渲染。

在一个可选的实施例中,获取并缓存所述视频流的所述第一视频帧包括:将所述第一视频帧缓存到所述数组包括的索引值为第一索引值的framebuffer中(对应于前述的pre_fbo_idx);在获取到所述第一视频帧的下一帧之后,所述方法还包括:将所述第一视频帧的下一帧缓存到所述数组包括的索引值为第二索引值的framebuffer(对应于前述的cur_fbo_idx)中;在输出所述目标帧之后,将两个framebuffer的索引值进行调换;其中,优先对索引值为第一索引值的framebuffer中的视频帧进行渲染。在本实施例中,采集到当前视频帧(对应于上述下一帧)之后,就将其存储到双framebuffer数组的当前帧cur_fbo_idx中,同时对该帧进行检测处理,例如,人脸识别。取出当前检测结果(由于检测处理耗时较长,所以,该当前检测结果实际上是该当前视频帧的前一帧的检测结果),以及pre_fbo_idx中缓存的数据,结合该当前检测结果对取出的缓存的数据进行加工处理后输出,从而实现了延迟一帧渲染(包括前述的修改处理以及输出处理)的目的。

在一个可选的实施例中,在将两个framebuffer的索引值进行调换之后,所述方法还包括:将所述第一视频帧的下一帧作为更新后的第一视频帧,并重复执行对更新后的第一视频帧进行检测以及根据检测结果对更新后的第一视频帧进行渲染的处理。从而实现对每个视频帧都延迟一帧渲染的目的。

在一个可选的实施例中,对所述第一视频帧进行检测处理,得到检测结果包括:对所述第一视频帧进行人脸检测,得到人脸检测结果;根据所述检测结果对所述第一视频帧的帧数据进行修改,得到目标帧包括:根据所述人脸检测结果按照预先设置的美颜参数对所述第一视频帧进行修改,得到所述目标帧。需要说明的是,上述的人脸检测处理以及美颜处理可以采用现有的技术进行处理。在本实施例中,当上述检测处理为人脸检测时,需要预先创建人脸检测线程,以处理人脸检测相关工作,并且,还需要创建渲染线程,处理摄像头采集大的视频帧的渲染,即,结合人脸检测结果进行美颜处理,以及输出到预览的处理。

下面以对由摄像头采集到的视频中的人脸进行美颜处理为例对本发明进行说明:

图4是根据本发明实施例的人脸美颜的示意图,如图4所示,该流程包括如下处理:

s1,创建人脸检测线程;

s2,创建用于摄像头加工与渲染的渲染线程,该线程用于接收摄像头数据,主要包括如下处理:

(a)创建双framebuffer数组,用于存储每次摄像头输出的图像,初始化当期帧cur_fbo_idx=0,前一帧pre_fbo_idx=1。

(b)摄像头采集的数据更新后,将摄像头采集到的数据存储至framebuffer数组当前帧的位置中,同时将数据送至人脸检测线程进行检测。

(c)读取人脸检测队列数据,并结合framebuffer数组前一帧位置图像做加工处理,如美颜,人脸贴纸等处理,输出处理后的图像。

(d)更新当前帧(cur_fbo_idx)、前一帧(pre_fbo_idx)值,即,对调当前帧和前一帧所指向的索引。例如对调前:cur_fbo_idx=0,pre_fbo_idx=1,则对调后:cur_fbo_idx=1,pre_fbo_idx=0。

上述处理为一次工作流程,根据帧率循环往复,即,当下一帧达来时,重复执行上述的处理。

通过上述各实施例,可以有效解决在部分性能较差的机器中出现的人脸不同步问题,降低主播使用门槛。并且,采用的是异步方案,能减轻渲染线程负载,有利于提高渲染帧率。有效解决多线程引入时检测结果与当前采集摄像头帧不对应的问题。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种视频帧的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图5是根据本发明实施例的视频帧的处理装置的结构框图,如图5所示,该装置包括:

获取模块52,用于获取并缓存视频流的第一视频帧;检测模块54,用于对所述第一视频帧进行检测处理,得到检测结果;修改模块56,用于根据所述检测结果对所述第一视频帧的帧数据进行修改,得到目标帧;输出模块58,用于在获取到所述第一视频帧的下一帧的情况下,输出所述目标帧。

在一个可选的实施例中,上述装置还包括:创建模块,用于在获取并缓存所述第一视频帧之前,创建包括两个帧缓存framebuffer的数组,其中,所述两个framebuffer分别用于缓存获取到的两个相邻的视频帧。

在一个可选的实施例中,上述获取模块52用于:将所述第一视频帧缓存到所述数组包括的索引值为第一索引值的framebuffer中;以及,在获取到所述第一视频帧的下一帧之后,将所述第一视频帧的下一帧缓存到所述数组包括的索引值为第二索引值的framebuffer中;在输出所述目标帧之后,将两个framebuffer的索引值进行调换;其中,优先对索引值为第一索引值的framebuffer中的视频帧进行渲染。

在一个可选的实施例中,所述装置还用于:在将两个framebuffer的索引值进行调换之后,将所述第一视频帧的下一帧作为更新后的第一视频帧,并重复执行对更新后的第一视频帧进行检测以及根据检测结果对更新后的第一视频帧进行渲染的处理。

在一个可选的实施例中,所述检测模块54用于:对所述第一视频帧进行人脸检测,得到人脸检测结果;所述修改模块56用于:根据所述人脸检测结果按照预先设置的美颜参数对所述第一视频帧进行修改,得到所述目标帧。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1