图像获取方法、图像获取装置、终端设备及可读存储介质转让专利

申请号 : CN202010124625.4

文献号 : CN111314646B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 彭冬炜

申请人 : OPPO(重庆)智能科技有限公司

摘要 :

本申请提供了一种图像获取方法、图像获取装置、终端设备及可读存储介质。所述方法包括:若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;接收所述API函数所返回的图像;其中,所述终端设备通过调用所述API函数,执行如下操作:接收远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像。本申请能够避免研发人员事先学习如何对远程摄像头发送的数据进行处理,从而在一定程度上提高对用于获取远程摄像头画面的目标应用程序的研发效率。

权利要求 :

1.一种图像获取方法,应用于终端设备,其特征在于,包括:若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;

接收所述API函数所返回的图像;

其中,所述终端设备在调用所述API函数时,用于获取身份标识为第一标识或者身份标识为第二标识的摄像头所采集的画面,所述终端设备通过调用所述API函数,执行如下操作:

判断采集待获取的图像的摄像头的身份标识是所述第一标识,还是所述第二标识;

若为所述第一标识,则判断所述第一标识所对应的摄像头是否为远程摄像头;若为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像;若为安装在所述终端设备上的第一本地摄像头,则获取所述第一本地摄像头所采集的图像;

若为所述第二标识,则判断所述第二标识所对应的摄像头是否为远程摄像头;若为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像;若为安装在所述终端设备上的第二本地摄像头,则获取所述第二本地摄像头所采集的图像。

2.如权利要求1所述的图像获取方法,其特征在于,在若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数的步骤之前,所述图像获取方法还包括:提供给用户一操作界面,根据用户在所述操作界面的设置,确定所述第一标识所对应的摄像头是远程摄像头还是所述第一本地摄像头,并确定所述第二标识所对应的摄像头是远程摄像头还是所述第二本地摄像头。

3.如权利要求2所述的图像获取方法,其特征在于,所述第一本地摄像头以及所述第二本地摄像头中,其中一个为所述终端设备上的前置摄像头,另一个为所述终端设备上的后置摄像头;

所述API函数为:对Camera框架中,用于获取前置以及后置摄像头所采集的图像的API函数进行修改后,所得到的函数。

4.如权利要求2所述的图像获取方法,其特征在于,所述第一标识所对应的摄像头被预先设置为所述第一本地摄像头,所述第二标识所对应的摄像头被预先设置为所述第二本地摄像头;

相应地,所述提供给用户一操作界面,根据用户在所述操作界面的设置,确定所述第一标识所对应的摄像头是远程摄像头还是所述第一本地摄像头,并确定所述第二标识所对应的摄像头是远程摄像头还是所述第二本地摄像头,包括:搜索远程摄像头,并将搜索到的远程摄像头显示至所述操作界面,以供用户进行选择;

与用户所选择的远程摄像头建立连接;

若连接成功,则检测用户对连接成功的所述远程摄像头的身份标识的设置操作;

若检测到用户将连接成功的所述远程摄像头的身份标识设置为所述第一标识,则将所述第一标识所对应的摄像头设置为所述远程摄像头;若检测到用户将连接成功的所述远程摄像头的身份标识设置为所述第二标识,则将所述第二标识所对应的摄像头设置为所述远程摄像头。

5.如权利要求1至4中任一项所述的图像获取方法,其特征在于,所述接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像,包括:向所述远程摄像头发送请求,以获取所述远程摄像头所支持的图像分辨率、数据传输协议以及图像编码格式;

接收所述远程摄像头发送的数据;

基于获取到所述远程摄像头所支持的图像分辨率、数据传输协议以及图像编码格式,对接收的所述远程摄像头发送的数据进行处理,从所述数据中获取图像。

6.一种图像获取装置,应用于终端设备,其特征在于,包括:API调用模块,用于若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;

返回图像接收模块,用于接收所述API函数所返回的图像;

其中,所述终端设备在调用所述API函数时,用于获取身份标识为第一标识或者身份标识为第二标识的摄像头所采集的画面;所述API函数包括:标识判断模块,用于判断采集待获取的图像的摄像头的身份标识是所述第一标识,还是所述第二标识;

远程判断模块、远程数据处理模块以及本地图像获取模块具体用于:若为所述第一标识,则判断所述第一标识所对应的摄像头是否为远程摄像头;若为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像;若为安装在所述终端设备上的第一本地摄像头,则获取所述第一本地摄像头所采集的图像;

若为所述第二标识,则判断所述第二标识所对应的摄像头是否为远程摄像头;若为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像;若为安装在所述终端设备上的第二本地摄像头,则获取所述第二本地摄像头所采集的图像。

7.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述图像获取方法的步骤。

8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述图像获取方法的步骤。

说明书 :

图像获取方法、图像获取装置、终端设备及可读存储介质

技术领域

[0001] 本申请属于摄像头访问技术领域,尤其涉及一种图像获取方法、图像获取装置、终端设备及计算机可读存储介质。

背景技术

[0002] 现有技术中,为了使得终端设备(比如,手机或者台式电脑)能够获取远程摄像头采集的画面,需要在该终端设备上安装一能够获取远程摄像头采集画面的应用程序(为便
于本申请的后续描述,称该应用程序为目标应用程序),通过运行该目标应用程序,使得该
终端设备执行如下操作:与远程摄像头建立连接;接收远程摄像头所发送的数据;对接收的
该数据进行处理(比如,对接收的数据进行组包以及解码等处理),以得到该数据中所包含
的图像;最后可以将得到的图像作为预览画面在该目标应用程序的界面进行显示。
[0003] 由此可见,现有技术中,为了使得终端设备能够获取远程摄像头所采集的图像,需要研发人员编写上述目标应用程序,从而使得终端设备能够对远程摄像头发送的数据进行
处理,以从中获取图像,所以,需要研发人员事先熟悉如何对远程摄像头发送的数据进行处
理,导致降低了上述目标应用程序的研发效率。

发明内容

[0004] 有鉴于此,本申请实施例提供了一种图像获取方法、图像获取装置、终端设备及计算机可读存储介质。能够避免研发人员事先学习如何对远程摄像头发送的数据进行处理,
从而在一定程度上提高对上述目标应用程序的研发效率。
[0005] 本申请实施例的第一方面提供了一种图像获取方法,应用于终端设备,包括:
[0006] 若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;
[0007] 接收所述API函数所返回的图像;
[0008] 其中,所述终端设备通过调用所述API函数,执行如下操作:
[0009] 接收远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像。
[0010] 本申请实施例的第二方面提供了一种预览图像显示装置,应用于终端设备,包括:
[0011] API调用模块,用于若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;
[0012] 返回图像接收模块,用于接收所述API函数所返回的图像;
[0013] 其中,所述终端设备通过调用所述API函数,执行如下操作:
[0014] 接收远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像。
[0015] 本申请实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时
实现如上述第一方面所述图像获取方法的步骤。
[0016] 本申请实施例的第四方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如上述第一方面所述图像获
取方法的步骤。
[0017] 本申请实施例的第五方面提供了一种计算机程序产品,上述计算机程序产品包括计算机程序,上述计算机程序被一个或多个处理器执行时实现如上述第一方面所述图像获
取方法的步骤。
[0018] 由上可见,本申请提供了一种获取远程摄像头所采集的画面的方法,即:若终端设备接收到用于指示该终端设备获取摄像头采集图像的指令时,则调用相机Camera框架中的
API(Application Programming Interface,应用程序接口)函数(本申请并不对该API函数
的个数进行限定,可以是一个API函数,也可以是多个API函数),在本申请所提供的技术方
案中,该API函数能够返回待获取的图像。
[0019] 其中,终端设备在调用上述API函数时,能够执行如下操作:接收远程摄像头发送的数据,对该数据进行处理,得到该数据中包含的图像。
[0020] 在本申请所提供的技术方案中,终端设备的Camera框架中的API函数与现有技术中的有所不同,现有技术中,Camera框架中的API函数仅仅使得应用程序能够通过调用API
函数来访问安装在终端设备上的本地摄像头,并不能使得应用程序通过调用API函数访问
远程摄像头。本申请所提供的技术方案中,对传统的Camera框架进行了改进,将“对远程摄
像头发送的数据的处理过程”封装至Camera框架的API函数中,从而使得在研发上述目标应
用程序时,仅仅使得该目标应用程序调用API函数即可实现对远程摄像头的访问,不需要该
目标应用程序的研发人员熟悉了解如何对远程摄像头发送的数据进行处理,所以,本申请
所提供的技术方案,能够避免上述目标应用程序的研发人员事先学习如何对远程摄像头发
送的数据进行处理,从而在一定程度上提高对上述目标应用程序的研发效率。

附图说明

[0021] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些
实施例。
[0022] 图1是本申请实施例一提供的一种图像获取方法的实现流程示意图;
[0023] 图2是本申请实施例二提供的另一种图像获取方法的实现流程示意图;
[0024] 图3是本申请实施例二中用于描述微信应用程序如何实现对远程摄像头访问的示意图;
[0025] 图4是本申请实施例三提供的又一种图像获取方法的实现流程示意图;
[0026] 图5是本申请实施例三提供的一种用户在操作界面进行操作的流程图;
[0027] 图6是本申请实施例三提供的相机应用程序调用Camera框架中的API函数后,终端设备的数据处理流程图;
[0028] 图7是本申请实施例四提供的一种图像获取装置的结构示意图;
[0029] 图8是本申请实施例五提供的终端设备的结构示意图;

具体实施方式

[0030] 以下描述中,为了说明而不是为了限定,提出了诸如特定的技术细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中
也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说
明,以免不必要的细节妨碍本申请的描述。
[0031] 本申请实施例提供的图像获取方法适用于终端设备,示例性地,该终端设备包括但不限于:智能手机、平板电脑、笔记本、桌上型计算机、云端服务器等。
[0032] 应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、
操作、元素、组件和/或其集合的存在或添加。
[0033] 还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0034] 另外,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0035] 为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
[0036] 实施例一
[0037] 下面对本申请实施例一提供的图像获取方法进行描述,该方法应用于终端设备(比如智能手机),请参阅附图1,该方法包括如下步骤:
[0038] 在步骤S101中,若接收到用于指示上述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数,其中,上述终端设备通
过调用上述API函数,执行如下操作:接收远程摄像头发送的数据,对该数据进行处理,得到
该数据中包含的图像;
[0039] 本领域技术人员都知晓,在现有技术中,当用户开启摄像头时,终端设备需要获取摄像头采集的图像,以显示预览画面;或者,当用户开启视频通话功能时,终端设备也会获
取摄像头采集的图像,以传输给视频通话的对方联系人;又或者,当用户启动应用程序(比
如斗鱼)的直播功能时,同样也会获取摄像头采集的图像。因此,在本申请实施例中,当用户
开启摄像头时,可认为该终端设备接收到“用于指示上述终端设备获取摄像头采集图像”的
指令;或者,当用户开启视频通话功能时,可认为接收到“用于指示上述终端设备获取摄像
头采集图像”的指令;又或者,当用户启动应用程序的直播功能时,也可认为接收到“该用于
指示上述终端设备获取摄像头采集图像”的指令。也即是,本申请并不对终端设备接收“用
于指示上述终端设备获取摄像头采集图像”的指令的场景进行具体限定。
[0040] 在本申请所提供的技术方案中,若接收到“用于指示上述终端设备获取摄像头采集图像”的指令时,则调用Camera框架中的API函数(并不对这里所述的API函数数量进行限
定,可以是一个,也可以是多个),该API函数中封装了“对远程摄像头发送的数据进行处理
的方法”,从而使得该API函数被调用时,终端设备执行如下操作:接收远程摄像头发送的数
据,对该数据进行处理,得到该数据中包含的图像。
[0041] 现有技术中,终端设备的Camera框架中提供有很多API函数,比如对于Android操作系统来说,Camera框架中有OpenCamera函数等,现有技术中的这些API函数都仅仅提供了
对安装在终端设备中的本地摄像头进行访问的功能。本申请对现有的Camera框架进行了改
进(使得改进后的Camera框架中包含有支持访问远程摄像头的API函数,该API函数可以是
重新编写的API函数,也可以是对原有的API函数进行修改后得到的函数),使得该Camera框
架中的API函数封装有“对远程摄像头发送的数据进行处理的方法”。下面对步骤S101所述
的API函数被调用时,终端设备所执行的一种具体过程进行描述,也就是上述“接收远程摄
像头发送的数据,对数据进行处理,得到该数据中包含的图像”可以包括以下具体步骤:
[0042] 步骤A、向远程摄像头发送请求,以获取该远程摄像头所支持的图像分辨率、数据传输协议以及图像编码格式;
[0043] 其中,上述数据传输协议可以为RTP(Real‑Time Transport Protocol,实时传输协议)、RTSP(Real Time Streaming Protocol,实时流传输协议)或者RTMP(Real Time 
Messaging Protocol,实时消息传输协议)等,本申请并不对上述数据传输协议的具体形式
进行限定。
[0044] 上述图像编码格式可以为MPEG4、H264或者H265等,本申请同样不对上述图像编码格式进行具体限定。
[0045] 步骤B、接收上述远程摄像头发送的数据;
[0046] 若通过上述步骤A中,可知远程摄像头支持多种图像编码格式,则可以在执行该步骤B之前,先执行“向该远程摄像头请求特定图像编码格式的数据”,然后再执行该步骤B。
[0047] 步骤C、基于获取到上述远程摄像头所支持的图像分辨率、数据传输协议以及图像编码格式,对接收的上述远程摄像头发送的数据进行处理,从上述数据中获取图像。
[0048] 比如,在该步骤C中,基于上述数据传输协议,对远程摄像头发送的数据进行组包以及搜帧等处理,基于上述图像分辨率以及上述图像编码格式,对组包搜帧之后的数据进
行解码,从而得到包含的图像。
[0049] 此外,在本申请实施例中,“与远程摄像头建立连接”的操作可以封装至上述步骤S101所述的“API函数”中,也可以不封装至该API函数,而是在调用该API函数之前,执行与
远程摄像头建立连接的操作。
[0050] 在步骤S102中,接收上述API函数所返回的图像;
[0051] 终端设备在调用步骤S101所述的API函数之后,会获取到该API函数所返回的图像,终端设备可以直接将该图像流为预览图像进行显示,或者将该图像保存至存储器,或者
对该图像进行打包处理,发送至其他设备。
[0052] 基于上述分析可知,本申请中的Camera框架中的API函数封装有对远程摄像头发送的数据进行处理的过程,当终端设备要获取远程摄像头采集的画面时,可直接通过调用
API函数来实现,这样可以使得目标应用程序的开发较为简便,研发人员在开发程序时,直
接调用对应的API函数即可,完全不需要考虑如何对远程摄像头返回的数据进行处理(因为
具体处理过程已经封装至了API函数中),进而提供目标应用程序的开发效率。
[0053] 实施例二
[0054] 本申请实施例二提供了另一种图像获取方法,应用于终端设备,请参阅附图2,该图像获取方法包括:
[0055] 在步骤S201中,若接收到用于指示上述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数,其中,上述终端设备通
过调用上述API函数,执行如下操作:判断采集待获取的图像的摄像头是否为远程摄像头;
若为远程摄像头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含
的图像;若为安装在上述终端设备上的本地摄像头,则获取该本地摄像头所采集的图像;
[0056] 该步骤S201所述的“API函数”被调用时,可以支持终端设备获取远程摄像头或者本地摄像头所采集的图像。与实施例一相同,实施例二也不对该API函数的数量进行限定。
[0057] 在本申请实施例二中,用户可以事先对“采集待获取的图像的摄像头”进行设置,比如可以在终端设备中的“设置应用程序”中来进行设置。然后当该API函数被调用时,可以
基于用户的设置来获取相应摄像头所采集的图像,进而执行后续的显示、存储或者图像传
输等操作。
[0058] 在本申请实施例二中,终端设备通过调用该API函数,执行如下操作:
[0059] 判断采集待获取的图像的摄像头是否为远程摄像头;
[0060] 若为远程摄像头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含的图像;
[0061] 若为安装在上述终端设备上的本地摄像头,则获取该本地摄像头所采集的图像。
[0062] 由于远程摄像头与本地摄像头的访问方式不同,因此,需要先判断“采集待获取图像”的摄像头是远程摄像头还是本地摄像头,若为远程摄像头,则与该远程摄像头进行通
信,获取该远程摄像头所采集的图像,若为本地摄像头,则与该本地摄像头进行通信,获取
本地摄像头所采集的图像。
[0063] 在步骤S202中,接收上述API函数所返回的图像;
[0064] 该步骤S202的具体实现方式与实施例一中的步骤S102相同,具体参见实施例一的描述,此处不再赘述。
[0065] 现有技术中,Camera框架中提供了对本地摄像头进行访问的API函数,基于此,现有技术中的很多应用程序,比如,微信、斗鱼、QQ以及相机应用程序等都是通过调用该API函
数实现了对本地摄像头的访问。因此,如果上述步骤S201所述的“API函数”是对现有API函
数的改进(即:在现有的用于实现对本地摄像头访问的API函数中,增加一段代码,使得现有
的API函数增加访问远程摄像头的功能),可以使得现有的很多应用程序,比如微信、斗鱼、
QQ或者相机应用程序等,不需要做任何改进也能够实现对远程摄像头的访问。
[0066] 下面基于附图3来阐述,基于本申请实施例二的技术方案,可以使得现在的微信应用程序,在进行视频通话时,能够向对方实时传输远程摄像头所采集的画面。
[0067] 如图3所示,终端设备301上安装有应用程序“微信”,该终端设备301上安装有本地摄像头302,并且该终端设备可以与远程摄像头303进行通信。
[0068] 假设现有的微信应用程序通过调用现有技术中Camera框架中的API‑X函数,实现对本地摄像头302的访问,从而使得微信可以支持视频通话等功能,比如用户在与微信好友
进行视频通话时,可以将本地摄像头302所采集的画面实时传输给对方。在本申请实施例二
中,若对API‑X进行修改,使得该API‑X在被调用时,终端设备能够执行如下操作:判断采集
待获取的图像的摄像头是否为远程摄像头;若为远程摄像头,则接收该远程摄像头发送的
数据,对该数据进行处理,得到该数据中包含的图像;若为安装在上述终端设备上的本地摄
像头,则获取该本地摄像头所采集的图像。那么,本领域技术人员容易理解,在这种情况下,
不需要对现有的微信应用程序做任何改变,即可以在“采集待获取图像的摄像头被设置为
远程摄像头”时(用户可以事先进行设置,即在执行上述步骤S201之前进行事先设置),获取
远程摄像头采集的图像,并实时传输给对方联系人,进而解决了现有技术中,微信无法将远
程摄像头采集的画面实时传输给对方的技术问题。同理,基于本申请实施例二所述的技术
方案,也能解决现有技术中,斗鱼等直播应用程序只能将本地摄像头采集的画面进行直播
的技术问题,具体原因此处不再赘述。
[0069] 由此可见,本申请实施例二所提供的技术方案中,终端设备可以通过上述API函数实现对本地摄像头以及远程摄像头的访问,从而对于上述目标应用程序的研发人员来说,
仅仅通过调用该API函数即可实现对远程以及本地摄像头的监控,极大方便了编程操作。此
外,在本申请实施例二所提供的技术方案中,若步骤S201所述的API函数为“对Camera框架
中原有的对本地摄像头进行访问的API函数修改而得的”时,可以使得现有的支持访问本地
摄像头的应用程序不作任何修改,即可以访问远程摄像头,即远程摄像头可以被虚拟为本
地摄像头,使得现有的一些应用程序(比如,微信、斗鱼、QQ或者相机应用程序等)可以像访
问本地摄像头一样访问远程摄像头,解决了现有技术中,微信、斗鱼、QQ以及相机应用程序
等只能访问本地摄像头,无法访问远程摄像头的技术问题,且不需要对该类应用程序进行
任何修改。
[0070] 实施例三
[0071] 本申请实施例三提供了又一种图像获取方法,应用于终端设备,请参阅附图4,该图像获取方法包括:
[0072] 在步骤S401中,若接收到用于指示上述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数,其中,上述终端设备通
过调用上述API函数,执行如下操作:判断采集待获取图像的摄像头的身份标识是第一标识
还是第二标识;若为第一标识,则判断该第一标识所对应的摄像头是否为远程摄像头;若为
远程摄像头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含的图
像;若为安装在上述终端设备上的第一本地摄像头,则获取该第一本地摄像头所采集的图
像;若为第二标识,则判断该第二标识所对应的摄像头是否为远程摄像头;若为远程摄像
头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含的图像;若为
安装在上述终端设备上的第二本地摄像头,则获取该第二本地摄像头所采集的图像;
[0073] 在本申请实施例三所提供的技术方案中,Camera框架中的API函数在被调用时,能够使得终端设备访问第一标识所对应的摄像头或者第二标识所对应的摄像头,并且,该第
一标识所对应的摄像头以及该第二标识所对应的摄像头均既可以为远程摄像头也可以为
本地摄像头。与实施例一相同,该实施例三也不对步骤S401中所述的API函数的个数进行具
体限定。该实施例三所提供的API函数,可以使得上述目标应用程序的研发人员仅仅调用该
API函数就能够实现对两个本地摄像头以及远程摄像头的访问,便于研发人员进行应用程
序的开发。
[0074] 目前,现有技术中的终端设备上大部分都安装有两个本地摄像头,分别为前置摄像头和后置摄像头,因此,在本申请实施例中,上述步骤S401所述的第一本地摄像头以及第
二本地摄像头中,其中一个可以为前置摄像头,另一个可以为后置摄像头。
[0075] 此外,在本申请实施例三中,在执行上述步骤S401之前,可以提供给用户一操作界面(可以在“设置应用程序”中增加该功能),用户可以在该操作界面进行设置,从而来确定
上述第一标识以及上述第二标识分别对应的摄像头。
[0076] 在本申请实施例中,上述第一标识所对应的摄像头可以被预先设置为第一本地摄像头,第二标识所对应的摄像头可以被预先设置为第二本地摄像头,然后基于该初始设置
以及用户在该操作界面的设置,来确定第一标识以及第二标识所对应的摄像头是远程还是
相应的本地摄像头。比如,该操作界面可以显示搜索到的远程摄像头,以供用户进行选择;
其次,与用户所选择的远程摄像头建立连接;然后,若连接成功,则检测用户对连接成功的
所述远程摄像头的身份标识的设置操作,若检测到用户将连接成功的所述远程摄像头的身
份标识设置为所述第一标识,则将所述第一标识所对应的摄像头设置为所述远程摄像头,
若检测到用户将连接成功的所述远程摄像头的身份标识设置为所述第二标识,则将所述第
二标识所对应的摄像头设置为所述远程摄像头。
[0077] 此外,用户还能够在该操作界面,将第一标识所对应的摄像头变更为上述第一本地摄像头,将第二标识对应的摄像头变更为上述第二本地摄像头。
[0078] 如图5所示,终端设备提供给用户一操作界面,用户进入该操作界面后,可打开该操作界面上的搜索开关,终端设备在检测到该搜索开关被开启后,搜索远程摄像头,并将搜
索到的远程摄像头以列表形式显示在该操作界面上;其次,用户可点击操作界面上任一远
程摄像头,当终端设备检测到用户的点击操作时,与用户点击的该远程摄像头建立连接;然
后,若连接成功,则提醒用户将该远程摄像头设置为前置摄像头,还是设置为后置摄像头。
[0079] 本领域技术人员容易理解,这里所述的“提醒用户将该远程摄像头设置为前置摄像头,还是设置为后置摄像头”即是等同于“提醒用户将该远程摄像头的身份标识设置为第
一标识还是第二标识”,由于第一标识以及第二标识比较难以抽象,一般消费者可能难以理
解,因此,在操作界面上,可以通过提醒用户将该远程摄像头设置为前置还是后置的方式,
来确定该远程摄像头的身份标识,本领域技术人员容易理解,如果将远程摄像头设置为前
置摄像头时,即相当于将远程摄像头虚拟成本地的前置摄像头,即若最初预先设置前置摄
像头的身份标识为第二标识,后置摄像头的身份标识为第一标识,那么,若用户通过操作界
面将远程摄像头设置为前置摄像头时,则可确定第二标识所对应的摄像头从本地的前置摄
像头变更为该远程摄像头,第一标识所对应的摄像头仍然为后置摄像头。
[0080] 目前,现有技术中的终端设备上大部分都安装有前置摄像头以及后置摄像头,为了使得终端设备中的应用程序能够对前置摄像头以及后置摄像头进行访问,现有的Camera
框架中提供有用于获取前置或后置摄像头所采集图像的API函数。在本申请实施例三中,可
以对该已有的API函数进行改进,使得改进后的API函数被调用时,终端设备能够实现上述
步骤S401所述的“判断采集待获取图像的摄像头的身份标识是第一标识还是第二标识……
获取该第二本地摄像头所采集的图像”。在这种情况下,可以使得现有的能够访问前置以及
后置摄像头的应用程序不作任何修改,即可访问远程摄像头。下面通过附图6进行具体说
明。
[0081] 在现有技术中,为了对前置摄像头以及后置摄像头进行区分,需要为其分别分配不同的身份标识,比如,若前置摄像头的身份标识为第一标识(例如,00),后置摄像头的身
份标识为第二标识(例如,01)时,则在现有的API函数被调用时,终端设备会首先判断采集
待获取图像的摄像头的身份标识,若为第一标识,则获取前置摄像头采集的图像,然后将该
图像返回给应用程序。下面通过附图6(a)来说明现有技术中,相机应用程序如何将前置摄
像头采集的图像作为预览画面进行显示。如图6(a)所示,终端设备通过调用现有Camera框
架中的API函数,以获取前置摄像头采集的图像,并将该图像返回至相机应用程序,其中,在
步骤S604a中,若终端设备检测到启动的摄像头的标识为第一标识,则终端设备可以在HAL
(Hardware Abstract Layer,硬件抽象层)调用V4L2视频驱动框架获取该第一标识所对应
的摄像头(即前置摄像头)采集的图像,以返回至相机应用程序,使得相机应用程序获取前
置摄像头所采集的图像,并进行预览画面显示。
[0082] 在本申请实施例三中,可以对现有的API函数进行改进,使得改进后的API函数被调用时,能够实现上述步骤S401所述的“判断采集待获取图像的摄像头的身份标识是第一
标识还是第二标识……则获取该第二本地摄像头所采集的图像”,具体的改进方法可以为:
API函数被调用时,终端设备所执行的步骤S604a变更为步骤S604b。即,修改后的API函数被
调用时,若检测到启动的摄像头的标识为第一标识,则在HAL层执行如下操作:
[0083] 判断该第一标识对应的摄像头的是否为远程摄像头;
[0084] 若是,则接收该远程摄像头返回的数据,对该数据进行处理,获取该数据中所包含的图像;
[0085] 若否,则可以调用V4L2视频框架获取该第一标识的摄像头(即前置摄像头)采集的图像。
[0086] 同理,若检测到启动的摄像头标识为第二标识,则在HAL层执行如下操作:
[0087] 判断该第二标识对应的摄像头的是否为远程摄像头;
[0088] 若是,则接收该远程摄像头返回的数据,对该数据进行处理,获取该数据中所包含的图像;
[0089] 若否,则可以调用V4L2视频框架获取该第二标识的摄像头(即后置摄像头)采集的图像。
[0090] 由此可见,在附图6所示的例子中,对于相机应用程序,当用户在该相机应用程序中设置采集待获取图像的摄像头为“前置摄像头”时,即相当于告知Camera框架中的API函
数采集待获取图像的摄像头的身份标识为第一标识,若该第一标识对应的摄像头被事先设
置为远程摄像头时(比如,用户事先在上述操作界面将远程摄像头设置为前置摄像头),即
可在该相机应用程序中显示远程摄像头所采集的画面。显然这不需要对相机应用程序做任
何修改,即可实现对远程摄像头的访问,对于微信、斗鱼或者QQ等其他应用程序来说,也可
以不做任何修改即可实现对远程摄像头的访问。
[0091] 在本申请实施例三中,终端设备可以通过上述API函数实现对两个本地摄像头以及远程摄像头的访问,从而对于上述目标应用程序的研发人员来说,仅仅通过调用该API函
数即可实现对远程以及两个本地摄像头的监控,极大方便了编程操作。
[0092] 此外,在本申请实施例三所提供的技术方案中,若终端设备提供操作界面使得用户能够对第一标识或第二标识分别对应的摄像头进行设置,且步骤S401所述的API函数为
“对Camera框架中原有的对前置以及后置摄像头进行访问的API函数修改而得的”时,可以
使得目前能够对前置或后置摄像头访问的应用程序,不作任何修改,即可实现对远程摄像
头的访问。比如,对于微信应用程序来说,若用户在操作界面将远程摄像头设置为前置摄像
头时,那么,当用户使用微信进行视频通话时,若开启前置摄像头,则可以将远程摄像头采
集的画面发送至对方联系人,由此解决了现有的一些应用程序只能访问本地摄像头,无法
访问远程摄像头的技术问题。
[0093] 实施例四
[0094] 本申请实施例四提供了一种图像获取装置。为了便于说明,仅示出与本申请相关的部分,如图7所示,该图像获取装置700包括:
[0095] API调用模块701,用于若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;
[0096] 返回图像接收模块702,用于接收所述API函数所返回的图像;
[0097] 其中,所述API函数包括远程数据处理模块:用于接收远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像。
[0098] 可选地,所述API函数还包括:
[0099] 远程判断模块,用于判断采集待获取的图像的摄像头是否为远程摄像头;
[0100] 相应地,所述远程数据处理模块具体用于:
[0101] 若所述远程判断模块判断结果为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像;
[0102] 相应地,所述API函数还包括:
[0103] 本地图像获取模块,用于若为安装在所述终端设备上的本地摄像头,则获取所述本地摄像头所采集的图像。
[0104] 可选地,所述终端设备在调用所述API函数时,用于获取身份标识为第一标识或者身份标识为第二标识的摄像头所采集的画面;
[0105] 相应地,所述API函数还包括:
[0106] 标识判断模块,用于判断采集待获取的图像的摄像头的身份标识是所述第一标识,还是所述第二标识;
[0107] 相应地,所述远程判断模块、所述远程数据处理模块以及所述本地图像获取模块具体用于:
[0108] 若为所述第一标识,则判断所述第一标识所对应的摄像头是否为远程摄像头;若为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中
包含的图像;若为安装在所述终端设备上的第一本地摄像头,则获取所述第一本地摄像头
所采集的图像;
[0109] 若为所述第二标识,则判断所述第二标识所对应的摄像头是否为远程摄像头;若为远程摄像头,则接收所述远程摄像头发送的数据,对所述数据进行处理,得到所述数据中
包含的图像;若为安装在所述终端设备上的第二本地摄像头,则获取所述第二本地摄像头
所采集的图像。
[0110] 可选地,所述图像获取装置700还包括:
[0111] 操作界面模块,用于提供给用户一操作界面,根据用户在所述操作界面的设置,确定所述第一标识所对应的摄像头是远程摄像头还是所述第一本地摄像头,并确定所述第二
标识所对应的摄像头是远程摄像头还是所述第二本地摄像头。
[0112] 可选地,所述第一本地摄像头以及所述第二本地摄像头中,其中一个为所述终端设备上的前置摄像头,另一个为所述终端设备上的后置摄像头;
[0113] 所述API函数为:对Camera框架中,用于获取前置以及后置摄像头所采集的图像的API函数进行修改后,所得到的函数。
[0114] 可选地,所述第一标识所对应的摄像头被预先设置为所述第一本地摄像头,所述第二标识所对应的摄像头被预先设置为所述第二本地摄像头;
[0115] 相应地,所述操作界面模块包括:
[0116] 远程搜索单元,用于搜索远程摄像头,并将搜索到的远程摄像头显示至所述操作界面,以供用户进行选择;
[0117] 连接建立单元,用于与用户所选择的远程摄像头建立连接;
[0118] 检测单元,用于若连接成功,则检测用户对连接成功的所述远程摄像头的身份标识的设置操作;
[0119] 设置单元,用于若检测到用户将连接成功的所述远程摄像头的身份标识设置为所述第一标识,则将所述第一标识所对应的摄像头设置为所述远程摄像头;若检测到用户将
连接成功的所述远程摄像头的身份标识设置为所述第二标识,则将所述第二标识所对应的
摄像头设置为所述远程摄像头。
[0120] 可选地,上述远程数据处理模块,包括:
[0121] 请求单元,用于向所述远程摄像头发送请求,以获取所述远程摄像头所支持的图像分辨率、数据传输协议以及图像编码格式;
[0122] 接收单元,用于接收所述远程摄像头发送的数据;
[0123] 处理单元,用于基于获取到所述远程摄像头所支持的图像分辨率、数据传输协议以及图像编码格式,对接收的所述远程摄像头发送的数据进行处理,从所述数据中获取图
像。
[0124] 需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例一以及方法实施例二基于同一构思,其具体功能及带来的技术效果,具体可参
见相应方法实施例部分,此处不再赘述。
[0125] 实施例五
[0126] 图8是本申请实施例五提供的终端设备的示意图。如图8所示,该实施例的终端设备800包括:处理器801、存储器802以及存储在上述存储器802中并可在上述处理器801上运
行的计算机程序803。上述处理器801执行上述计算机程序803时实现上述各个方法实施例
中的步骤。或者,上述处理器801执行上述计算机程序803时实现上述各装置实施例中各模
块/单元的功能。
[0127] 示例性的,上述计算机程序803可以被分割成一个或多个模块/单元,上述一个或者多个模块/单元被存储在上述存储器802中,并由上述处理器801执行,以完成本申请。上
述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段
用于描述上述计算机程序803在上述终端设备800中的执行过程。例如,上述计算机程序803
可以被分割成API调用模块以及返回图像接收模块,各模块具体功能如下:
[0128] 若接收到用于指示所述终端设备获取摄像头采集图像的指令时,调用相机Camera框架中的用于访问摄像头的应用程序接口API函数;
[0129] 接收所述API函数所返回的图像;
[0130] 其中,所述终端设备通过调用所述API函数,执行如下操作:
[0131] 接收远程摄像头发送的数据,对所述数据进行处理,得到所述数据中包含的图像。
[0132] 上述终端设备可包括,但不仅限于,处理器801、存储器802。本领域技术人员可以理解,图8仅仅是终端设备800的示例,并不构成对终端设备800的限定,可以包括比图示更
多或更少的部件,或者组合某些部件,或者不同的部件,例如上述终端设备还可以包括输入
输出设备、网络接入设备、总线等。
[0133] 所称处理器801可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路
(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑
Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、
分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器
等。
[0134] 上述存储器802可以是上述终端设备800的内部存储单元,例如终端设备800的硬盘或内存。上述存储器802也可以是上述终端设备800的外部存储设备,例如上述终端设备
800上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure 
Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述存储器802还可以既包括上述终端
设备800的内部存储单元也包括外部存储设备。上述存储器802用于存储上述计算机程序以
及上述终端设备所需的其它程序和数据。上述存储器802还可以用于暂时地存储已经输出
或者将要输出的数据。
[0135] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的
功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上
描述的全部或者部分功能。
[0136] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0137] 在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,上
述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如
多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0138] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0139] 上述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述各个
方法实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述
的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实
现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程
序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读
介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬
盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器
(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的
是,上述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适
当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信
号和电信信号。
[0140] 以上上述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各
实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改
或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应
包含在本申请的保护范围之内。