一种多窗口预览图像方法、装置、计算机设备和存储介质与流程

文档序号:25646414发布日期:2021-06-25 17:25阅读:85来源:国知局
一种多窗口预览图像方法、装置、计算机设备和存储介质与流程
一种多窗口预览图像方法、装置、计算机设备和存储介质
【技术领域】
1.本发明涉及图像技术领域,尤其涉及一种多窗口预览图像方法、装置、计算机设备和存储介质。


背景技术:

2.目前,安卓(android)原生系统中相机应用程序(camera app)通过标准的应用程序接口(application programming interface,简称:api)只能实现yuv格式数据的预览,无法直接实现raw格式数据的预览,只能通过修改图形(graphic)模块以实现raw格式数据的预览。另外,camera app需要通过一个camera实例控制,只能进行单窗口预览,若要实现多窗口预览,需要通过不同的camera实例进行控制,无法保证各路camera数据采集的同步性。


技术实现要素:

3.有鉴于此,本发明实施例提供了一种多窗口预览图像方法、装置、计算机设备和存储介质,可以直接实现raw格式数据的预览,保证各路相机数据采集的同步性,从而实现多窗口预览图像。
4.一方面,本发明实施例提供了一种多窗口预览图像方法,所述方法包括:
5.获取预览数据;
6.将预览数据按照约定格式进行拼接,生成第一拼接数据;
7.将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像。
8.可选地,在获取预览数据之前,还包括:
9.接收相机应用层发送的获取预览数据请求。
10.可选地,获取预览数据,包括
11.向至少一个相机摄像头发送获取预览数据请求;
12.接收相机摄像头发送的预览数据。
13.可选地,还包括:
14.获取辅助数据;
15.将预览数据和辅助数据按照约定格式进行拼接,生成第二拼接数据;
16.将第二拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第二拼接数据并在多个预览窗口中显示根据第二拼接数据生成的预览图像。
17.可选地,将第一拼接数据存储至设置的缓存队列,包括:
18.通过回调函数,将第一拼接数据存储至设置的缓存队列。
19.可选地,预览数据包括raw格式数据或yuv格式数据
20.另一方面,本发明实施例提供了一种辅助设备的确定装置,包括:
21.第一获取单元,用于获取预览数据;
22.第一拼接单元,用于将预览数据按照约定格式进行拼接,生成第一拼接数据;
23.第一存储单元,用于将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像。
24.可选地,装置还包括:
25.接收单元,用于接收相机应用层发送的获取预览数据请求。
26.另一方面,本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述多窗口预览图像方法。
27.另一方面,本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于,所述程序指令被处理器加载并执行时实现上述多窗口预览图像方法。
28.本发明实施例的方案中,获取预览数据;将预览数据按照约定格式进行拼接,生成第一拼接数据;将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像,可以直接实现raw格式数据的预览,保证各路相机数据采集的同步性,从而实现多窗口预览图像。
【附图说明】
29.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
30.图1为本发明实施例提供的一种多窗口预览图像方法的流程图;
31.图2为本发明实施例提供的又一种多窗口预览图像方法的流程图;
32.图3为本发明实施例提供的又一种多窗口预览图像方法的流程图;
33.图4为本发明实施例提供的一种多窗口预览图像装置的结构示意图;
34.图5为本发明实施例提供的一种计算机设备的示意图。
【具体实施方式】
35.为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
36.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
37.在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
38.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
39.应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述设定阈值,但
这些设定阈值不应限于这些术语。这些术语仅用来将设定阈值彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一设定阈值也可以被称为第二设定阈值,类似地,第二设定阈值也可以被称为第一设定阈值。
40.在安卓(android)原生系统中,相机(camera)应用程序(application,简称:app),可以通过标准应用程序编程接口(application programming interface,简称:api)进行单camera实例通过回调函数(callback)数据流实现yuv格式数据的预览。但现在多数camera模组输出的数据是raw格式数据,例如:结构光模组、飞行时间(time

of

flight,简称:tof)模组等,tof是一种成像技术,由一组人眼看不到的红外光(激光脉冲)向外发射,遇到物体后反射,反射到摄像头,计算从发射到反射回摄像头的时间差或相位差,并将数据收集起来,形成一组距离深度数据,从而得到一个立体的3d模型的成像技术;如需实现raw格式数据的预览,需要对graphic模块进行适配修改,十分不方便。另外,camera app通过一个camera实例只能实现单窗口预览,若需要实现多窗口预览,需要通过控制多个camera实例获取数据,但在多摄像头场景下,如:手机支持多摄像头场景、车载需要多摄像头传输数据场景等,会增加camera app的控制复杂性,无法保证采集的每个摄像头的数据的同步性,从而造成图像预览效果欠佳。
41.本发明实施例提供的多窗口预览图像方法,在不违背android标准api且不修改android基本框架的情况下,camera app可自主显示raw数据预览,并可只通过一个camera实例实现多窗口预览。
42.图1为本发明实施例提供的一种多窗口预览图像方法的流程图,如图1所示,该方法包括:
43.步骤101、获取预览数据。
44.步骤102、将预览数据按照约定格式进行拼接,生成第一拼接数据。
45.步骤103、将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像。
46.本发明实施例提供的技术方案中,获取预览数据;将预览数据按照约定格式进行拼接,生成第一拼接数据;将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像,可以直接实现raw格式数据的预览,保证各路相机数据采集的同步性,从而实现多窗口预览图像。
47.图2为本发明实施例提供的又一种多窗口预览图像方法的流程图,如图2所示,该方法包括:
48.步骤201、接收相机应用层发送的获取预览数据请求。
49.本发明实施例中,各步骤由camera hal层执行,camera hal层为android架构中camera的硬件抽象层。
50.本发明实施例中,相机应用层为camera app。
51.本发明实施例中,相机应用层向camera hal层发送获取预览数据请求,表示相机应用层通过open函数创建一个camera实例,该camera实例用于后续与底层的交互。
52.步骤202、向至少一个相机摄像头发送获取预览数据请求。
53.本发明实施例中,若相机摄像头的数量为一个,则向该摄像头发送预览数据请求;
若相机摄像头的数量为多个,向每个相机摄像头发送预览数据请求,以采集到预览数据。
54.步骤203、接收相机摄像头发送的预览数据。
55.本发明实施例中,相机摄像头的传感器向camera hal层发送预览数据。
56.本发明实施例中,预览数据包括raw格式数据或yuv格式数据。值得说明的是,预览数据还可以具备其它格式,本发明实施例对此不作限定。
57.本发明实施例中,yuv格式是一种可以直接通过android graphic模块显示图像的格式。
58.本发明实施例中,raw格式是一种不可以直接通过android graphic模块显示图像的格式。
59.步骤204、将预览数据按照约定格式进行拼接,生成第一拼接数据。
60.本发明实施例中,约定格式可以根据实际情况进行设置,本发明实施例对此不作限定。
61.步骤205、将第一拼接数据存储至设置的缓存队列(buffer)。
62.本发明实施例中,相机应用层创建一个raw格式的数据buffer,并将该buffer传递至底层,以供底层创建对应的数据流。
63.本发明实施例中,通过callback函数,将第一拼接数据存储至buffer。其中,callback函数是一种回调的方式,camera hal层获取到第一拼接数据后,通过callback函数回调,将预览数据回传到相机应用层。
64.步骤206、相机应用层从buffer中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像。
65.本发明实施例中,相机应用层为camera app,即:camera app从buffer中获取第一拼接数据,并按照约定格式对第一拼接数据进行解析,生成预览图像;将预览图像通过多个预览窗口进行显示,以实现多窗口预览。其中,可以通过调用开放式图形库(open graphics library,简称:opengl)对预览图像进行刷新预览。
66.进一步地,camera app从buffer中获取第一拼接数据后,通过算法库中的指定算法对第一拼接数据进行美化处理,生成处理后的第一拼接数据;按照约定格式对处理后的第一拼接数据进行解析,生成预览图像;将预览图像通过多个预览窗口进行显示,以实现多窗口预览。其中,算法库中包括多个算法,可以按照实际情况进行算法的选择,从而对第一拼接数据进行美化处理。
67.值得说明的是,图2所示的多窗口预览图像方法可用于车载360环视和结构光标定等场景。
68.本发明实施例在不违背android标准api且不修改android基本框架的情况下,camera app可通过一个camera实例控制多个摄像头的数据获取,既可以降低camera app自身控制的复杂性,也可解决控制多个camera实例获取多个摄像头的数据方法中存在的数据间同步性问题,通过本发明实施例提供的技术方案,不仅可以获取多个摄像头camera的raw格式数据,而且同样可以获取多个摄像头camera的yuv格式数据或其它需要的底层数据,camera app仅需按照约定格式对拼接数据进行解析即可实现图像的多窗口预览。
69.本发明实施例提供的多窗口预览图像方法的技术方案中,获取预览数据;将预览数据按照约定格式进行拼接,生成第一拼接数据;将第一拼接数据存储至设置的缓存队列,
以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像,可以直接实现raw格式数据的预览,保证各路相机数据采集的同步性,从而实现多窗口预览图像。
70.图3为本发明实施例提供的又一种多窗口预览图像方法的流程图,如图3所示,该方法包括:
71.步骤301、接收相机应用层发送的获取预览数据请求。
72.步骤302、向至少一个相机摄像头发送获取预览数据请求。
73.步骤303、接收所述相机摄像头发送的所述预览数据。
74.本发明实施例中,步骤301至步骤303与步骤201至步骤203相同,在此不再赘述。
75.步骤304、获取辅助数据。
76.本发明实施例中,辅助数据为辅助生成预览图像的数据,辅助数据可以根据实际需求进行获取,本发明实施例不对辅助数据的类型进行限定。
77.步骤305、将预览数据和辅助数据按照约定格式进行拼接,生成第二拼接数据。
78.本发明实施例中,约定格式可以根据实际情况进行设置,本发明实施例对此不作限定。
79.步骤306、将第二拼接数据存储至设置的buffer。
80.本发明实施例中,相机应用层创建一个raw格式的数据buffer,并将该buffer传递至底层,以供底层创建对应的数据流。
81.本发明实施例中,通过callback函数,将第二拼接数据存储至buffer。其中,callback函数是一种回调的方式,camera hal层获取到第二拼接数据后,通过callback函数回调,将预览数据回传到相机应用层。
82.步骤307、相机应用层从buffer中获取第二拼接数据并在多个预览窗口中显示根据第二拼接数据生成的预览图像。
83.本发明实施例中,相机应用层为camera app,即:camera app从buffer中获取第二拼接数据,并按照约定格式对第二拼接数据进行解析,生成预览图像;将预览图像通过多个预览窗口进行显示,以实现多窗口预览。其中,可以通过调用开放式图形库(open graphics library,简称:opengl)对预览图像进行刷新预览。
84.进一步地,camera app从buffer中获取第二拼接数据后,通过算法库中的指定算法对第二拼接数据进行美化处理,生成处理后的第二拼接数据;按照约定格式对处理后的第二拼接数据进行解析,生成预览图像;将预览图像通过多个预览窗口进行显示,以实现多窗口预览。其中,算法库中包括多个算法,可以按照实际情况进行算法的选择,从而对第二拼接数据进行美化处理。
85.值得说明的是,图3所示的多窗口预览图像方法可用于车载360环视和结构光标定等场景。
86.本发明实施例在不违背android标准api且不修改android基本框架的情况下,camera app可通过一个camera实例控制多个摄像头的数据获取,既可以降低camera app自身控制的复杂性,也可解决控制多个camera实例获取多个摄像头的数据方法中存在的数据间同步性问题,通过本发明实施例提供的技术方案,不仅可以获取多个摄像头camera的raw格式数据,而且同样可以获取多个摄像头camera的yuv格式数据或其它需要的底层数据,
camera app仅需按照约定格式对拼接数据进行解析即可实现图像的多窗口预览。
87.本发明实施例提供的多窗口预览图像方法的技术方案中,获取预览数据;将预览数据按照约定格式进行拼接,生成第一拼接数据;将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像,可以直接实现raw格式数据的预览,保证各路相机数据采集的同步性,从而实现多窗口预览图像。
88.图4为本发明实施例提供的一种多窗口预览图像装置的结构示意图,该装置用于执行上述多窗口预览图像方法,如图4所示,该装置包括:第一获取单元11、第一拼接单元12和第一存储单元13。
89.第一获取单元11用于获取预览数据。所述第一获取单元11可以是:芯片、芯片模组或芯片模组的一部分。
90.第一拼接单元12用于将预览数据按照约定格式进行拼接,生成第一拼接数据。所述第一拼接单元12可以是:芯片、芯片模组或芯片模组的一部分。
91.第一存储单元13用于将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像。所述第一存储单元13可以是:芯片、芯片模组或芯片模组的一部分。
92.本发明实施例中,该装置还包括:接收单元14。
93.接收单元14用于接收相机应用层发送的获取预览数据请求。
94.本发明实施例中,第一获取单元11具体用于向至少一个相机摄像头发送获取预览数据请求;接收相机摄像头发送的预览数据。
95.本发明实施例中,该装置还包括:第二获取单元15、第二拼接单元16和第二存储单元17。
96.第二获取单元15用于获取辅助数据。
97.第二拼接单元16用于将预览数据和辅助数据按照约定格式进行拼接,生成第二拼接数据。
98.第二存储单元17用于将第二拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第二拼接数据并在多个预览窗口中显示根据第二拼接数据生成的预览图像。
99.本发明实施例中,第一存储单元13具体用于通过回调函数,将第一拼接数据存储至设置的缓存队列。
100.本发明实施例的方案中,获取预览数据;将预览数据按照约定格式进行拼接,生成第一拼接数据;将第一拼接数据存储至设置的缓存队列,以供相机应用程序从缓存队列中获取第一拼接数据并在多个预览窗口中显示根据第一拼接数据生成的预览图像,可以直接实现raw格式数据的预览,保证各路相机数据采集的同步性,从而实现多窗口预览图像。
101.本发明实施例提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述多窗口预览图像方法的实施例的各步骤,具体描述可参见上述多窗口预览图像方法的实施例。
102.本发明实施例提供了一种计算机设备,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实
现上述多窗口预览图像方法的实施例的各步骤,具体描述可参见上述多窗口预览图像方法的实施例。
103.图5为本发明实施例提供的一种计算机设备的示意图。如图5所示,该实施例的计算机设备30包括:处理器31、存储器32以及存储在存储32中并可在处理器31上运行的计算机程序33,该计算机程序33被处理器31执行时实现实施例中的应用于多窗口预览图像方法,为避免重复,此处不一一赘述。或者,该计算机程序被处理器31执行时实现实施例中应用于多窗口预览图像装置中各模型/单元的功能,为避免重复,此处不一一赘述。
104.计算机设备30包括,但不仅限于,处理器31、存储器32。本领域技术人员可以理解,图5仅仅是计算机设备30的示例,并不构成对计算机设备30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。
105.所称处理器31可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
106.存储器32可以是计算机设备30的内部存储单元,例如计算机设备30的硬盘或内存。存储器32也可以是计算机设备30的外部存储设备,例如计算机设备30上配备的插接式硬盘,智能存储(smart media,sm)卡,安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器32还可以既包括计算机设备30的内部存储单元也包括外部存储设备。存储器32用于存储计算机程序以及计算机设备所需的其他程序和数据。存储器32还可以用于暂时地存储已经输出或者将要输出的数据。
107.关于上述实施例中描的各个装置、产品包含模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用或集成芯片的各个装置、产品其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者至少部分模块/单元可以采用软件程序的方式实现,该运行于芯片内部集成处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应于或集成芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同模块/单元可以位于芯片模组的同一件(例如片、电路模块等)或者不同组件中,至少部分/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成处理器剩余(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余(如果有)部分模块/单元可以采用电路等硬件方式实现。
108.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1