著录项信息
专利名称 | 主机外置摄像头的实现方法和装置及移动终端 |
申请号 | CN201310554952.3 | 申请日期 | 2013-11-08 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2014-02-05 | 公开/公告号 | CN103559150A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F13/10 | IPC分类号 | G;0;6;F;1;3;/;1;0;;;H;0;4;N;5;/;2;3;2查看分类表>
|
申请人 | 深圳市道通科技有限公司 | 申请人地址 | 广东省深圳市南山区西丽街道学苑大道1001号智园B1栋7层、8层、10层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 深圳市道通科技股份有限公司 | 当前权利人 | 深圳市道通科技股份有限公司 |
发明人 | 李红京;刘洋;刘书培;刘洪 |
代理机构 | 北京品源专利代理有限公司 | 代理人 | 胡彬 |
摘要
本发明实施例提供一种主机外置摄像头的实现方法和装置及移动终端。该方法包括:主机操作系统监测到外置摄像头插拔时,广播外置摄像头插拔信息;相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层的操作接口,产生或释放摄像头资源实例;所述相机应用程序,通过主机操作系统的硬件抽象层的操作接口,调用产生的摄像头资源实例完成图像处理功能。本发明将外置摄像头通过软件实现资源实例,从而虚拟化为该主机的内置摄像头,进而即可以实现该外置摄像头所采集图像的处理功能。由于主机可方便的插拔外置摄像头,所以操作方便、灵活,且无需额外的硬件和软件改进,因此实现的成本低。
主机外置摄像头的实现方法和装置及移动终端\n技术领域\n[0001] 本发明实施例涉及计算机设备技术,尤其涉及一种主机外置摄像头的实现方法和装置及移动终端。\n背景技术\n[0002] 内镜,亦称内窥镜,是一种多学科通用的工具,其功能是能对弯曲管道深处探查,能用于观察不能直视到的部位,能在密封空腔内观察内部空间结构与状态,能实现远距离观察与操作。工业内窥镜可在不需拆卸或破坏组装及设备停止运行的情况下,实现无损检测,广泛应用于航空、汽车、船舶、电气、化学、电力、煤气、原子能、土木建筑等现代核心工业的各个部门。\n[0003] 现有内窥镜由主机与探测管组成,探测管即为摄像头,用于采集图像,其连接至主机后,通过主机中的器件完成图像预览和拍照。\n[0004] 由此,现有技术需要在主机中增加相关器件来配合实现内窥镜,这带来了设备成本提高的缺陷。\n发明内容\n[0005] 本发明实施例提供一种主机外置摄像头的实现方法和装置及移动终端,以降低主机实现外置摄像头的成本。\n[0006] 本发明实施例提供一种主机外置摄像头的实现方法,包括:\n[0007] 主机操作系统监测到外置摄像头插拔时,广播外置摄像头插拔信息;\n[0008] 相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层的操作接口,产生或释放摄像头资源实例;\n[0009] 所述相机应用程序,通过主机操作系统的硬件抽象层的操作接口,调用产生的摄像头资源实例完成图像处理功能,所述图像处理功能至少包括预览、拍照和/或录像。\n[0010] 本发明实施例还提供一种主机外置摄像头的实现装置,包括:\n[0011] 插拔广播模块,用于采用主机操作系统监测到外置摄像头插拔时,广播外置摄像头插拔信息;\n[0012] 资源实例操作模块,用于采用相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层的操作接口,产生或释放摄像头资源实例;\n[0013] 图像处理模块,用于采用所述相机应用程序通过主机操作系统的硬件抽象层的操作接口,调用产生的摄像头资源实例完成图像处理功能,所述图像处理功能至少包括预览、拍照和/或录像。\n[0014] 本发明实施例又提供一种移动终端,所配置的主机操作系统为安卓操作系统,所述终端包括外置插拔接口,所述终端还包括本发明任意实施例所提供的主机外置摄像头的实现装置。\n[0015] 本发明实施例的技术方案,将外置摄像头通过软件实现资源实例,从而虚拟化为该主机的内置摄像头,进而即可以实现该外置摄像头所采集图像的处理功能。由于主机可方便的插拔外置摄像头,所以操作方便、灵活,且无需额外的硬件和软件改进,因此实现的成本低。\n附图说明\n[0016] 图1为本发明实施例一提供的主机外置摄像头的实现方法的流程图;\n[0017] 图2为本发明实施例二提供的主机外置摄像头的实现方法的流程图;\n[0018] 图3为本发明实施例三提供的主机外置摄像头的实现装置的结构示意图。\n具体实施方式\n[0019] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。\n[0020] 实施例一\n[0021] 图1为本发明实施例一提供的主机外置摄像头的实现方法的流程图,本实施例可适用于在主机上以可插拔形式连接外置摄像头,进行图像处理的情况,尤为优选的场景是,以安卓(Android)主机操作系统实现的移动终端上,插拔外置摄像头来实现内窥镜。该方法可以由软件实现的主机外置摄像头的实现装置来执行,该装置配置在诸如移动终端的手机中。\n[0022] 本实施例的方法具体包括如下步骤:\n[0023] 步骤110、主机操作系统监测到外置摄像头插拔时,广播外置摄像头插拔信息;\n[0024] 步骤120、相机应用程序收到外置摄像头插入信息的广播,通过主机操作系统的硬件抽象层的操作接口,产生摄像头资源实例;\n[0025] 步骤130、所述相机应用程序,通过主机操作系统的硬件抽象层的操作接口,调用产生的摄像头资源实例完成图像处理功能,所述图像处理功能至少包括预览、拍照和/或录像;\n[0026] 步骤140、当相机应用程序收到外置摄像头拔出信息的广播,通过主机操作系统的硬件抽象层的操作接口,释放摄像头资源实例。\n[0027] 对于步骤120和140,相机应用程序可识别插拔信息的具体内容,进而完成产生或释放摄像头资源实例的操作。\n[0028] 本发明实施例的技术方案,将外置摄像头通过软件实现资源实例,从而虚拟化为该主机的内置摄像头,进而即可以实现该外置摄像头所采集图像的处理功能。由于主机可方便的插拔外置摄像头,所以操作方便、灵活,且无需额外的硬件和软件改进,因此实现的成本低。\n[0029] 实施例二\n[0030] 图2为本发明实施例二提供的主机外置摄像头的实现方法的流程图,本实施例以前述实施例为基础提供了一优选实例。\n[0031] 在本实施例中,外置摄像头所属的插接口类型为通用串行总线(Universal Serial Bus,简称USB),本领域技术人员可以理解,外置摄像头所属的插接口类型也可以选择主机能提供的其他协议端口。\n[0032] 本实施例的主机操作系统以安卓系统为例,其采用的内核为Linux。安卓系统具备的设定功能的函数和接口,在其他主机操作系统中也可实现类似功能,仅为名称差异。\n[0033] 基于上述情况,本实施例的方法具体包括如下步骤:\n[0034] 步骤210、配置主机操作系统的内核支持外置摄像头所属类型,以支持外置摄像头设备,其中,所述外置摄像头的类型为USB。\n[0035] 上述步骤用于实现外置摄像头的驱动层支持。本步骤为可选步骤,如该主机本身已经支持某类型的外置摄像头,则无需重复的配置。下面以安卓系统配置USB摄像头为例说明具体的配置手段。video4linux是linux中关于视频设备的内核驱动,其针对视频设备的应用编程提供一致的编程接口,linux中的UVC class可完成对于USB摄像头的支持,通过将内核配置文件中USB_VIDEO_CLASS选中为Y即可生成内核设备驱动,从而可完成内核对USB摄像头的驱动层支持。\n[0036] 实施例一中的主机操作系统监测到外置摄像头插拔时,广播外置摄像头插拔信息的操作具体可包括:\n[0037] 步骤220、主机操作系统的内核通过Netlink监听内核设备插拔事件,并解析通过Netlink收到的信息,判别插拔的设备;\n[0038] 上述操作中,Netlink(网络链接)为诸如相机应用程序等用户进程与内核系统之间进行通讯的机制。用户空间程序可创建AF_NETLINK协议簇,协议类型为NETLINK_KOBJECT_UEVENT类型的套接字,即可接收系统上设备的插拔信息,插拔信息中包含插入拔出的设备类型等信息。\n[0039] 步骤230、当所述主机操作系统判别出插拔的设备是摄像头时,广播外置摄像头插拔信息;\n[0040] 上述步骤220和230可实现主机对摄像头的自动切换。对于存在内置摄像头的主机,内置摄像头和外置摄像头同时存在时即出现优先访问的问题。以安卓系统的移动终端插入USB摄像头为例,实现插入USB摄像头情况下优先访问USB摄像头,拔出USB摄像头情况下,保存相关的拍照和录像数据,并切换到内置摄像头。具体的执行手段可以为:\n[0041] UsbService(USB服务)的UsbHostManager(USB主机管理器)为主机操作系统中的功能函数,可监测系统是否出现USB摄像头插拔事件,并通过发送Android Broadcast(安卓广播)进行通知。\n[0042] 实施例一中相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层的操作接口,产生或释放摄像头资源实例的操作可分为插入摄像头和拔出摄像头的两个操作过程。插入摄像头,产生摄像头资源实例的操作过程具体包括:\n[0043] 步骤240、相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层接口传递外置摄像头的标识;\n[0044] 以安卓系统插入USB摄像头为例,当USB摄像头插入时,启动相机应用程序,优先选择USB摄像头,如果相机应用程序已经在前台运行时,则自动切换到USB摄像头为当前摄像头。可以通过将外置摄像头封装为内置摄像头来利用已有的实现机制实现图像处理。\n[0045] 具体的,相机应用程序一般可通过主机操作系统的硬件抽象层接口传递内置摄像头的标识,例如,通过hw_module_methods_t结构体的open方法,传递摄像头ID(数字字符)来打开不同的摄像头。可设置“1”代表前置摄像头,“0”代表后置摄像头。在open方法中根据摄像头ID的不同,主机操作系统可对不同的摄像头进行不同的初始化。在实现外置摄像头时,即以外置摄像头的ID代替内置摄像头的ID。在打开前置或后置摄像头情况下,以外置摄像头标识代替内置摄像头标识,以控制摄像头构造函数执行USB摄像头资源的初始化,从而实现将USB摄像头封装为前置摄像头。\n[0046] 步骤250、所述主机操作系统的摄像头构造函数通过遍历内核的视频硬件设备信息目录中各个子目录下设备名称文件,判别是否为外置摄像头的设备信息目录,并根据设备信息目录的目录名,获得外置摄像头的设备节点,通过操作外置摄像头设备采集图像;\n[0047] 步骤260、所述主机操作系统的摄像头构造函数通过内核提供的视频驱动接口,调用所述外置摄像头对应的设备驱动,并根据所述外置摄像头的描述参数和所述设备驱动为所述外置摄像头生成摄像头资源实例,实现图像处理功能接口,所述图像功能接口中完成对外置摄像头采集的图像数据的格式转换与压缩。\n[0048] 上述步骤中,根据传递的摄像头ID,主机操作系统的摄像头构造函数(CameraHardwareSec)进行对应摄像头资源的初始化。初始化包括了控制硬件节点的开启以及配置软件资源。如在步骤250中,通过遍历内核的视频硬件设备信息目录(sys/class/video4linux/video[0~n]下各子目录下设备名称(name)文件中存储的内容,确认该设备节点对应的摄像头设备是否为“usb camera”。即,依次识别每个节点的名称,判断该节点是否为USB摄像头。如果是,则查找相应的设备节点,具体是根据设备名称所在子目录的名称的尾部数字“d”,在设备节点的目录(/dev/videod)查找对应的设备节点。进而可控制打开对应的设备节点,初始化相关资源。\n[0049] 对于软件资源配置,在步骤260中,具体是调用外置摄像头对应的设备驱动,并根据外置摄像头的描述参数,例如像素、尺寸等参数,为外置摄像头生成摄像头资源实例,实现图像处理功能接口。\n[0050] 实施例一中的步骤130,所述相机应用程序,通过主机操作系统的硬件抽象层的操作接口,调用产生的摄像头资源实例完成图像处理功能的操作具体包括:\n[0051] 步骤270、所述相机应用程序通过jni调用,访问摄像头资源实例的图像处理功能接口,根据所述摄像头资源实例中的配置属性,采用软件格式转换函数或硬件编解码器,完成对图像数据的格式转换与压缩,并实现图像处理功能。\n[0052] 具体是,相机应用程序一般由Java程序实现,而硬件抽象层由c/c++程序实现,则相机应用程序可通过Java本地界面(Java Native Interface,JNI)间接调用硬件抽象层的结构体camera_device_ops_t操作接口,完成对摄像头的操作。在封装的图像功能接口中通过软件或安卓主机设备上的硬件编解码器完成从USB摄像头输出格式,例如YUV RGB等,到预览拍照录像输入格式的转换,获取预览拍照录像的所需要的图像数据。\n[0053] 预览拍照录像过程在图像处理功能接口实现流程中可根据CameraHardwareSec类mCameraID属性完成不同摄像头的功能处理流程,例如“1”代表前置摄像头,“0”表后置摄像头。\n[0054] 步骤280、所述相机应用程序收到外置摄像头拔出信息的广播时,停止图像处理功能,调用主机操作系统硬件抽象层的操作接口,释放所述摄像头资源实例。\n[0055] 在上述步骤中,当USB摄像头拔出时,相机应用程序可启动后置摄像头或停止运行。在录像拍照情况下,能够及时保存已录视频,释放资源,保护设备。\n[0056] 本发明实施例,将USB摄像头通过软件封装为安卓系统主机设备内置摄像头,可完成内窥镜功能的方案。在实现外置摄像头的过程中:封装USB摄像头并提供与内置摄像头一致的操作接口,从而相机应用程序可无差异化处理USB外置摄像头与内置摄像头。该方案通过遍历sys文件系统下目录各个视频设备子目录信息,获得USB外置摄像头对应的设备节点。该方案通过监听设备插拔事件,能根据摄像头插拔进行摄像头自动切换。系统通过Netlink与内核通讯,获取设备插入拔出信息,发出插入设备信息(VENDOR_ID和PRODUCT_ID等信息)的广播,接收广播并过滤USB摄像头的插拔消息,通知相机应用程序进行切换摄像头。\n[0057] 与现有技术相比,本发明实施例提出的技术方案中,有以下几点优势:\n[0058] 1、通过USB摄像头,借助安卓系统的平板电脑或移动终端,可通过软件实现内窥镜的功能,无需额外硬件设备,降低了成本;\n[0059] 2、USB插拔检测以广播信息形式实现,可完成插入摄像头后自动切换;\n[0060] 3、外置摄像头插拔方便,替换探测镜头灵活;\n[0061] 4、无需利用固定主机,可利用已有各类型主机的功能,例如触屏式交互,比传统按键式操作更人性化。\n[0062] 实施例三\n[0063] 图3为本发明实施例三提供的主机外置摄像头的实现装置的结构示意图,该装置包括:插拔广播模块310、资源实例操作模块320和图像处理模块330。\n[0064] 其中,插拔广播模块310用于采用主机操作系统监测到外置摄像头插拔时,广播外置摄像头插拔信息;资源实例操作模块320用于采用相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层的操作接口,产生或释放摄像头资源实例;图像处理模块330用于采用所述相机应用程序通过主机操作系统的硬件抽象层的操作接口,调用产生的摄像头资源实例完成图像处理功能,所述图像处理功能至少包括预览、拍照和/或录像。\n[0065] 在上述方案的基础上,优选是:\n[0066] 插拔广播模块310具体用于:采用主机操作系统的内核通过Netlink监听内核设备插拔事件,并解析通过Netlink收到的信息,判别插拔的设备;当所述主机操作系统判别出插拔的设备是摄像头时,广播外置摄像头插拔信息;\n[0067] 资源实例操作模块320包括:资源实例创建单元321和资源实例释放单元322。\n[0068] 所述资源实例创建单元321,用于采用相机应用程序收到外置摄像头插拔信息的广播,通过主机操作系统的硬件抽象层接口传递外置摄像头的标识;采用所述主机操作系统的摄像头构造函数通过遍历内核的视频硬件设备信息目录中各个子目录下设备名称文件,判别是否为外置摄像头的设备信息目录,并根据设备信息目录的目录名,获得外置摄像头的设备节点,通过操作外置摄像头设备采集图像;采用所述主机操作系统的摄像头构造函数通过内核提供的视频驱动接口,调用所述外置摄像头对应的设备驱动,并根据所述外置摄像头的描述参数和所述设备驱动为所述外置摄像头生成摄像头资源实例,实现图像处理功能接口,所述图像功能接口中完成对外置摄像头采集的图像数据的格式转换与压缩。\n[0069] 资源实例释放单元322用于采用所述相机应用程序收到外置摄像头拔出信息的广播时,停止图像处理功能,调用主机操作系统硬件抽象层的操作接口,释放所述摄像头资源实例。\n[0070] 图像处理模块330可具体用于:采用所述相机应用程序通过jni调用,访问摄像头资源实例的图像处理功能接口,根据所述摄像头资源实例中的配置属性,采用软件格式转换函数或硬件编解码器,完成对图像数据的格式转换与压缩,并实现图像处理功能。\n[0071] 进一步的,该装置还可包括:驱动层配置模块340,用于配置主机操作系统的内核支持外置摄像头所属类型,以支持外置摄像头设备,其中,所述外置摄像头的类型为通用串行总线。\n[0072] 本发明实施例提供的主机外置摄像头实现装置可用于执行本发明任意实施例所提供的主机外置摄像头实现方法,具备执行方法相应的功能模块和有益效果。\n[0073] 本发明实施例还提供了一种移动终端,所配置的主机操作系统为安卓操作系统,该终端包括外置插拔接口,还包括本发明任意实施例提供的主机外置摄像头的实现装置。\n该外置插拔接口优选为USB接口。当该移动终端插入外置USB摄像头时可作为内窥镜使用。\n[0074] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
法律信息
- 2016-11-16
- 2015-03-11
著录事项变更
申请人由深圳市道通科技有限公司变更为深圳市道通科技股份有限公司
地址由518000 广东省深圳市南山区西丽镇茶光路南侧深圳集成电路设计应用产业园106、107、109、114变更为518000 广东省深圳市南山区西丽街道学苑大道1001号智园B1栋7层、8层、10层
- 2014-03-12
实质审查的生效
IPC(主分类): G06F 13/10
专利申请号: 201310554952.3
申请日: 2013.11.08
- 2014-02-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-07-25
|
2011-01-20
| | |
2
| |
2008-12-31
|
2007-06-26
| | |
3
| |
2013-08-07
|
2013-04-01
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |