图像获取方法、图像获取装置、终端设备及可读存储介质转让专利
申请号 : CN202010124625.4
文献号 : CN111314646B
文献日 : 2021-04-23
发明人 : 彭冬炜
申请人 : OPPO(重庆)智能科技有限公司
摘要 :
权利要求 :
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中任一项所述图像获取方法的步骤。
说明书 :
图像获取方法、图像获取装置、终端设备及可读存储介质
技术领域
背景技术
于本申请的后续描述,称该应用程序为目标应用程序),通过运行该目标应用程序,使得该
终端设备执行如下操作:与远程摄像头建立连接;接收远程摄像头所发送的数据;对接收的
该数据进行处理(比如,对接收的数据进行组包以及解码等处理),以得到该数据中所包含
的图像;最后可以将得到的图像作为预览画面在该目标应用程序的界面进行显示。
处理,以从中获取图像,所以,需要研发人员事先熟悉如何对远程摄像头发送的数据进行处
理,导致降低了上述目标应用程序的研发效率。
发明内容
从而在一定程度上提高对上述目标应用程序的研发效率。
实现如上述第一方面所述图像获取方法的步骤。
取方法的步骤。
取方法的步骤。
API(Application Programming Interface,应用程序接口)函数(本申请并不对该API函数
的个数进行限定,可以是一个API函数,也可以是多个API函数),在本申请所提供的技术方
案中,该API函数能够返回待获取的图像。
函数来访问安装在终端设备上的本地摄像头,并不能使得应用程序通过调用API函数访问
远程摄像头。本申请所提供的技术方案中,对传统的Camera框架进行了改进,将“对远程摄
像头发送的数据的处理过程”封装至Camera框架的API函数中,从而使得在研发上述目标应
用程序时,仅仅使得该目标应用程序调用API函数即可实现对远程摄像头的访问,不需要该
目标应用程序的研发人员熟悉了解如何对远程摄像头发送的数据进行处理,所以,本申请
所提供的技术方案,能够避免上述目标应用程序的研发人员事先学习如何对远程摄像头发
送的数据进行处理,从而在一定程度上提高对上述目标应用程序的研发效率。
附图说明
实施例。
具体实施方式
也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说
明,以免不必要的细节妨碍本申请的描述。
操作、元素、组件和/或其集合的存在或添加。
过调用上述API函数,执行如下操作:接收远程摄像头发送的数据,对该数据进行处理,得到
该数据中包含的图像;
取摄像头采集的图像,以传输给视频通话的对方联系人;又或者,当用户启动应用程序(比
如斗鱼)的直播功能时,同样也会获取摄像头采集的图像。因此,在本申请实施例中,当用户
开启摄像头时,可认为该终端设备接收到“用于指示上述终端设备获取摄像头采集图像”的
指令;或者,当用户开启视频通话功能时,可认为接收到“用于指示上述终端设备获取摄像
头采集图像”的指令;又或者,当用户启动应用程序的直播功能时,也可认为接收到“该用于
指示上述终端设备获取摄像头采集图像”的指令。也即是,本申请并不对终端设备接收“用
于指示上述终端设备获取摄像头采集图像”的指令的场景进行具体限定。
定,可以是一个,也可以是多个),该API函数中封装了“对远程摄像头发送的数据进行处理
的方法”,从而使得该API函数被调用时,终端设备执行如下操作:接收远程摄像头发送的数
据,对该数据进行处理,得到该数据中包含的图像。
对安装在终端设备中的本地摄像头进行访问的功能。本申请对现有的Camera框架进行了改
进(使得改进后的Camera框架中包含有支持访问远程摄像头的API函数,该API函数可以是
重新编写的API函数,也可以是对原有的API函数进行修改后得到的函数),使得该Camera框
架中的API函数封装有“对远程摄像头发送的数据进行处理的方法”。下面对步骤S101所述
的API函数被调用时,终端设备所执行的一种具体过程进行描述,也就是上述“接收远程摄
像头发送的数据,对数据进行处理,得到该数据中包含的图像”可以包括以下具体步骤:
Messaging Protocol,实时消息传输协议)等,本申请并不对上述数据传输协议的具体形式
进行限定。
行解码,从而得到包含的图像。
远程摄像头建立连接的操作。
对该图像进行打包处理,发送至其他设备。
API函数来实现,这样可以使得目标应用程序的开发较为简便,研发人员在开发程序时,直
接调用对应的API函数即可,完全不需要考虑如何对远程摄像头返回的数据进行处理(因为
具体处理过程已经封装至了API函数中),进而提供目标应用程序的开发效率。
过调用上述API函数,执行如下操作:判断采集待获取的图像的摄像头是否为远程摄像头;
若为远程摄像头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含
的图像;若为安装在上述终端设备上的本地摄像头,则获取该本地摄像头所采集的图像;
基于用户的设置来获取相应摄像头所采集的图像,进而执行后续的显示、存储或者图像传
输等操作。
信,获取该远程摄像头所采集的图像,若为本地摄像头,则与该本地摄像头进行通信,获取
本地摄像头所采集的图像。
数实现了对本地摄像头的访问。因此,如果上述步骤S201所述的“API函数”是对现有API函
数的改进(即:在现有的用于实现对本地摄像头访问的API函数中,增加一段代码,使得现有
的API函数增加访问远程摄像头的功能),可以使得现有的很多应用程序,比如微信、斗鱼、
QQ或者相机应用程序等,不需要做任何改进也能够实现对远程摄像头的访问。
进行视频通话时,可以将本地摄像头302所采集的画面实时传输给对方。在本申请实施例二
中,若对API‑X进行修改,使得该API‑X在被调用时,终端设备能够执行如下操作:判断采集
待获取的图像的摄像头是否为远程摄像头;若为远程摄像头,则接收该远程摄像头发送的
数据,对该数据进行处理,得到该数据中包含的图像;若为安装在上述终端设备上的本地摄
像头,则获取该本地摄像头所采集的图像。那么,本领域技术人员容易理解,在这种情况下,
不需要对现有的微信应用程序做任何改变,即可以在“采集待获取图像的摄像头被设置为
远程摄像头”时(用户可以事先进行设置,即在执行上述步骤S201之前进行事先设置),获取
远程摄像头采集的图像,并实时传输给对方联系人,进而解决了现有技术中,微信无法将远
程摄像头采集的画面实时传输给对方的技术问题。同理,基于本申请实施例二所述的技术
方案,也能解决现有技术中,斗鱼等直播应用程序只能将本地摄像头采集的画面进行直播
的技术问题,具体原因此处不再赘述。
仅仅通过调用该API函数即可实现对远程以及本地摄像头的监控,极大方便了编程操作。此
外,在本申请实施例二所提供的技术方案中,若步骤S201所述的API函数为“对Camera框架
中原有的对本地摄像头进行访问的API函数修改而得的”时,可以使得现有的支持访问本地
摄像头的应用程序不作任何修改,即可以访问远程摄像头,即远程摄像头可以被虚拟为本
地摄像头,使得现有的一些应用程序(比如,微信、斗鱼、QQ或者相机应用程序等)可以像访
问本地摄像头一样访问远程摄像头,解决了现有技术中,微信、斗鱼、QQ以及相机应用程序
等只能访问本地摄像头,无法访问远程摄像头的技术问题,且不需要对该类应用程序进行
任何修改。
过调用上述API函数,执行如下操作:判断采集待获取图像的摄像头的身份标识是第一标识
还是第二标识;若为第一标识,则判断该第一标识所对应的摄像头是否为远程摄像头;若为
远程摄像头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含的图
像;若为安装在上述终端设备上的第一本地摄像头,则获取该第一本地摄像头所采集的图
像;若为第二标识,则判断该第二标识所对应的摄像头是否为远程摄像头;若为远程摄像
头,则接收该远程摄像头发送的数据,对该数据进行处理,得到该数据中包含的图像;若为
安装在上述终端设备上的第二本地摄像头,则获取该第二本地摄像头所采集的图像;
一标识所对应的摄像头以及该第二标识所对应的摄像头均既可以为远程摄像头也可以为
本地摄像头。与实施例一相同,该实施例三也不对步骤S401中所述的API函数的个数进行具
体限定。该实施例三所提供的API函数,可以使得上述目标应用程序的研发人员仅仅调用该
API函数就能够实现对两个本地摄像头以及远程摄像头的访问,便于研发人员进行应用程
序的开发。
二本地摄像头中,其中一个可以为前置摄像头,另一个可以为后置摄像头。
上述第一标识以及上述第二标识分别对应的摄像头。
以及用户在该操作界面的设置,来确定第一标识以及第二标识所对应的摄像头是远程还是
相应的本地摄像头。比如,该操作界面可以显示搜索到的远程摄像头,以供用户进行选择;
其次,与用户所选择的远程摄像头建立连接;然后,若连接成功,则检测用户对连接成功的
所述远程摄像头的身份标识的设置操作,若检测到用户将连接成功的所述远程摄像头的身
份标识设置为所述第一标识,则将所述第一标识所对应的摄像头设置为所述远程摄像头,
若检测到用户将连接成功的所述远程摄像头的身份标识设置为所述第二标识,则将所述第
二标识所对应的摄像头设置为所述远程摄像头。
索到的远程摄像头以列表形式显示在该操作界面上;其次,用户可点击操作界面上任一远
程摄像头,当终端设备检测到用户的点击操作时,与用户点击的该远程摄像头建立连接;然
后,若连接成功,则提醒用户将该远程摄像头设置为前置摄像头,还是设置为后置摄像头。
一标识还是第二标识”,由于第一标识以及第二标识比较难以抽象,一般消费者可能难以理
解,因此,在操作界面上,可以通过提醒用户将该远程摄像头设置为前置还是后置的方式,
来确定该远程摄像头的身份标识,本领域技术人员容易理解,如果将远程摄像头设置为前
置摄像头时,即相当于将远程摄像头虚拟成本地的前置摄像头,即若最初预先设置前置摄
像头的身份标识为第二标识,后置摄像头的身份标识为第一标识,那么,若用户通过操作界
面将远程摄像头设置为前置摄像头时,则可确定第二标识所对应的摄像头从本地的前置摄
像头变更为该远程摄像头,第一标识所对应的摄像头仍然为后置摄像头。
框架中提供有用于获取前置或后置摄像头所采集图像的API函数。在本申请实施例三中,可
以对该已有的API函数进行改进,使得改进后的API函数被调用时,终端设备能够实现上述
步骤S401所述的“判断采集待获取图像的摄像头的身份标识是第一标识还是第二标识……
获取该第二本地摄像头所采集的图像”。在这种情况下,可以使得现有的能够访问前置以及
后置摄像头的应用程序不作任何修改,即可访问远程摄像头。下面通过附图6进行具体说
明。
份标识为第二标识(例如,01)时,则在现有的API函数被调用时,终端设备会首先判断采集
待获取图像的摄像头的身份标识,若为第一标识,则获取前置摄像头采集的图像,然后将该
图像返回给应用程序。下面通过附图6(a)来说明现有技术中,相机应用程序如何将前置摄
像头采集的图像作为预览画面进行显示。如图6(a)所示,终端设备通过调用现有Camera框
架中的API函数,以获取前置摄像头采集的图像,并将该图像返回至相机应用程序,其中,在
步骤S604a中,若终端设备检测到启动的摄像头的标识为第一标识,则终端设备可以在HAL
(Hardware Abstract Layer,硬件抽象层)调用V4L2视频驱动框架获取该第一标识所对应
的摄像头(即前置摄像头)采集的图像,以返回至相机应用程序,使得相机应用程序获取前
置摄像头所采集的图像,并进行预览画面显示。
标识还是第二标识……则获取该第二本地摄像头所采集的图像”,具体的改进方法可以为:
API函数被调用时,终端设备所执行的步骤S604a变更为步骤S604b。即,修改后的API函数被
调用时,若检测到启动的摄像头的标识为第一标识,则在HAL层执行如下操作:
数采集待获取图像的摄像头的身份标识为第一标识,若该第一标识对应的摄像头被事先设
置为远程摄像头时(比如,用户事先在上述操作界面将远程摄像头设置为前置摄像头),即
可在该相机应用程序中显示远程摄像头所采集的画面。显然这不需要对相机应用程序做任
何修改,即可实现对远程摄像头的访问,对于微信、斗鱼或者QQ等其他应用程序来说,也可
以不做任何修改即可实现对远程摄像头的访问。
数即可实现对远程以及两个本地摄像头的监控,极大方便了编程操作。
“对Camera框架中原有的对前置以及后置摄像头进行访问的API函数修改而得的”时,可以
使得目前能够对前置或后置摄像头访问的应用程序,不作任何修改,即可实现对远程摄像
头的访问。比如,对于微信应用程序来说,若用户在操作界面将远程摄像头设置为前置摄像
头时,那么,当用户使用微信进行视频通话时,若开启前置摄像头,则可以将远程摄像头采
集的画面发送至对方联系人,由此解决了现有的一些应用程序只能访问本地摄像头,无法
访问远程摄像头的技术问题。
包含的图像;若为安装在所述终端设备上的第一本地摄像头,则获取所述第一本地摄像头
所采集的图像;
包含的图像;若为安装在所述终端设备上的第二本地摄像头,则获取所述第二本地摄像头
所采集的图像。
标识所对应的摄像头是远程摄像头还是所述第二本地摄像头。
连接成功的所述远程摄像头的身份标识设置为所述第二标识,则将所述第二标识所对应的
摄像头设置为所述远程摄像头。
像。
见相应方法实施例部分,此处不再赘述。
行的计算机程序803。上述处理器801执行上述计算机程序803时实现上述各个方法实施例
中的步骤。或者,上述处理器801执行上述计算机程序803时实现上述各装置实施例中各模
块/单元的功能。
述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段
用于描述上述计算机程序803在上述终端设备800中的执行过程。例如,上述计算机程序803
可以被分割成API调用模块以及返回图像接收模块,各模块具体功能如下:
多或更少的部件,或者组合某些部件,或者不同的部件,例如上述终端设备还可以包括输入
输出设备、网络接入设备、总线等。
(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑
Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、
分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器
等。
800上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure
Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述存储器802还可以既包括上述终端
设备800的内部存储单元也包括外部存储设备。上述存储器802用于存储上述计算机程序以
及上述终端设备所需的其它程序和数据。上述存储器802还可以用于暂时地存储已经输出
或者将要输出的数据。
功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上
描述的全部或者部分功能。
述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如
多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
方法实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,上述
的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实
现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程
序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读
介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬
盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器
(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的
是,上述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适
当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信
号和电信信号。
实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改
或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应
包含在本申请的保护范围之内。