USB摄像头数据获取方法、装置、电子设备和存储介质与流程

文档序号:24571351发布日期:2021-04-06 12:17阅读:919来源:国知局
USB摄像头数据获取方法、装置、电子设备和存储介质与流程

本申请涉及数据传输技术领域,尤其涉及一种usb摄像头数据获取方法、装置、电子设备和存储介质。



背景技术:

usb摄像头可以利用通用的usb接口连接到各种终端设备上,例如个人电脑,尤其是支持通过usb-otg接口连接到智能移动终端上,得到了广泛应用。为了对摄像头采集的数据进行处理,例如对采集的图像数据进行图像分析,获取图像中的目标信息,又或者通过onvif协议将usb摄像头采集的图像数据传递给远端的nvr(networkvideorecorder,网络视频录像机)设备。

目前读取usb摄像头媒体数据的方法通常是客户端进程通过使用usb端口读取摄像头采集的媒体流数据。然而该数据获取方式中,usb摄像头的端口会被当前获取数据的客户端进程独占,在这个过程中其他需要获取摄像头媒体数据的客户端进程将无法读取摄像头采集的数据。例如,当客户端进程a利用usb摄像头对应的usb端口进行数据读取时,该usb端口已被客户端进程a独占,其他客户端进程无法申请该usb端口号,便无从读取摄像头的数据。因此,为了使得多个客户端进程可以同时获取摄像头实时采集的媒体数据,需要将读取到usb摄像头的数据进行分流。

虽然目前可以使用rtsp协议提供的多播方式进行数据分流,然而,使用rtsp协议进行多播时存在多次数据编解码操作,性能损耗较大,影响下游任务,例如图像分析任务的处理效率。



技术实现要素:

本申请提供一种usb摄像头数据获取方法、装置、电子设备和存储介质,以实现usb摄像头的数据分流,并降低数据获取的性能损耗。

本申请提供一种usb摄像头数据获取方法,包括:

监听usb摄像头的设备状态;

若所述usb摄像头为初始化状态,则基于写内存服务进程创建共享内存;

基于所述写内存服务进程,通过所述usb摄像头的端口读取所述usb摄像头采集的图像数据,并将所述图像数据存入所述共享内存,以供各个客户端进程从所述共享内存中读取所述图像数据。

根据本申请提供的一种usb摄像头数据获取方法,所述若所述usb摄像头为初始化状态,则基于写内存服务进程创建共享内存,之后还包括:

将所述共享内存的物理地址映射到客户端进程的逻辑地址空间,得到对应所述客户端进程的共享内存逻辑地址,以供所述客户端进程根据所述共享内存逻辑地址读取所述共享内存中存储的图像数据。

根据本申请提供的一种usb摄像头数据获取方法,还包括:

获取当前系统内存的空间占用率;

若当前系统内存的空间占用率高于预设阈值,则结束所述写内存服务进程,并清空所述共享内存,以及删除对应的共享内存逻辑地址。

根据本申请提供的一种usb摄像头数据获取方法,所述监听usb摄像头的设备状态,具体包括:

监听所述usb摄像头的设备状态,并获取所述usb摄像头的配置信息;

所述配置信息包括所述usb摄像头采集图像的帧率以及采集的图像分辨率。

根据本申请提供的一种usb摄像头数据获取方法,所述共享内存的存储空间是基于所述usb摄像头采集的图像分辨率确定的。

根据本申请提供的一种usb摄像头数据获取方法,所述通过所述usb摄像头的端口读取所述usb摄像头采集的图像数据,并将所述图像数据存入所述共享内存,具体包括:

基于所述usb摄像头的图像采集帧率,通过所述usb摄像头的端口读取所述usb摄像头采集的图像数据;

若所述共享内存的存储空间已满,则删除所述共享内存中存储时间最早的若干个图像数据,并将当前读取的图像数据存入所述共享内存中。

本申请还提供一种usb摄像头数据获取方法,包括:

开启客户端进程;

基于所述客户端进程,从共享内存中读取usb摄像头采集的图像数据;

其中,所述图像数据是写内存服务进程通过所述usb摄像头的端口读取并存入到所述共享内存的。

根据本申请提供的一种usb摄像头数据获取方法,所述从共享内存中读取usb摄像头采集的图像数据,具体包括:

将所述共享内存的共享内存逻辑地址转换为物理地址;

基于所述共享内存的物理地址,读取所述共享内存中存储的图像数据。

本申请还提供一种usb摄像头数据获取装置,包括:

设备监听单元,用于监听usb摄像头的设备状态;

共享内存创建单元,用于若所述usb摄像头为初始化状态,则基于写内存服务进程创建共享内存;

数据获取单元,用于基于所述写内存服务进程,读取所述usb摄像头采集的图像数据,并将所述图像数据存入所述共享内存,以供各个客户端进程从所述共享内存中读取所述图像数据。

根据本申请提供的一种usb摄像头数据获取装置,还包括:

地址空间映射单元,用于将所述共享内存的物理地址映射到客户端进程的逻辑地址空间,得到对应所述客户端进程的共享内存逻辑地址,以供所述客户端进程根据所述共享内存逻辑地址读取所述共享内存中存储的图像数据。

本申请还提供一种usb摄像头数据获取装置,包括:

客户端进程开启单元,用于开启客户端进程;

数据读取单元,用于基于所述客户端进程,从共享内存中读取usb摄像头采集的图像数据;

其中,所述图像数据是写内存服务进程通过所述usb摄像头的端口读取并存入到所述共享内存的。

根据本申请提供的一种usb摄像头数据获取装置,

所述数据获取单元,具体包括:

地址转换单元,用于将所述共享内存的共享内存逻辑地址转换为物理地址;

读取单元,用于基于所述共享内存的物理地址,读取所述共享内存中存储的图像数据。

本申请还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述usb摄像头数据获取方法的步骤。

本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述usb摄像头数据获取方法的步骤。

本申请提供的usb摄像头数据获取方法、装置、电子设备和存储介质,通过创建共享内存,并基于写内存服务进程,通过usb摄像头的端口读取usb摄像头采集的图像数据,并将图像数据存入共享内存,以供各个客户端进程从共享内存中读取图像数据,使得多个客户端进程可以同时读取共享内存中存储的图像数据,实现了usb摄像头的数据分流,且单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

附图说明

为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的usb摄像头数据获取方法的流程示意图之一;

图2为本申请提供的内存空间管理方法的流程示意图;

图3为本申请提供的数据存储方法的流程示意图;

图4为本申请提供的usb摄像头数据获取方法的流程示意图之二;

图5为本申请提供的数据获取方法的流程示意图;

图6为本申请提供的usb摄像头数据获取方法的流程示意图之三;

图7为本申请提供的数据流向示意图;

图8为本申请提供的usb摄像头数据获取装置的结构示意图之一;

图9为本申请提供的内存空间管理单元的结构示意图;

图10为本申请提供的数据获取单元的结构示意图;

图11为本申请提供的usb摄像头数据获取装置的结构示意图之二;

图12为本申请提供的数据读取单元的结构示意图;

图13为本申请提供的电子设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1为本申请实施例提供的usb摄像头数据获取方法的流程示意图之一,如图1所示,该方法应用于终端设备的中间件中,该方法包括:

步骤110,监听usb摄像头的设备状态;

步骤120,若usb摄像头为初始化状态,则基于写内存服务进程创建共享内存;

步骤130,基于写内存服务进程,通过usb摄像头的端口读取usb摄像头采集的图像数据,并将图像数据存入共享内存,以供各个客户端进程从共享内存中读取图像数据。

具体地,本申请实施例提供的方法应用于终端系统的中间件中。其中,中间件是指终端设备中介于应用系统和系统软件之间的一类软件,中间件可以使用系统软件所提供的基础服务,衔接应用系统的各个部分或不同的应用,从而达到资源共享、功能共享的目的。在中间件中创建并开启写内存服务进程。其中,该写内存服务进程为在系统后台一直运行的系统进程,用于对内存进行数据写入操作。

usb摄像头可以通过usb接口连接到终端设备上,当usb摄像头连接到终端设备上之后会开始进行usb设备初始化,并在初始化完毕后开始采集图像数据。因此,为了在摄像头开始采集图像数据时实时获取其采集的图像数据以供客户端应用对其进行处理,可以对usb摄像头的设备状态进行监听。此处,对usb摄像头进行监听,一方面是为了获知当前usb摄像头是否连接到终端设备上,另一方面是为了获取usb摄像头当前的设备状态,以确定进行图像数据读取的时机。由于终端设备上可能存在多个usb接口,以接纳多个usb设备的连接,因此为了从多个usb设备中确定usb摄像头的设备状态,可以根据连接到终端设备上的usb设备的设备名称,确定usb摄像头。

若usb摄像头为初始化状态,即usb摄像头即将开始采集图像数据,此时,可以基于写内存服务进程在系统内存中开辟出一块内存空间,作为共享内存。其中,共享内存中的数据可被多个客户端进程共享,一旦共享内存中存储的数据发生更新,则多个客户端进程可以同时感知到该更新,并获取到最新的数据。需要说明的是,各个客户端进程与写内存服务进程运行于同一个终端设备中。

随后,usb摄像头会不断采集图像数据,并等待写内存服务进程读取该图像数据。与此同时,写内存服务进程会通过usb摄像头的usb端口读取其采集的图像数据,并将读取的图像数据按顺序存储到共享内存中,以供各个客户端进程从该共享内存中读取上述图像数据。由于usb摄像头采集的图像数据被写内存服务进程读取并存入到了共享内存中,而共享内存可以接受多个进程同时读取数据的请求,因此多个客户端进程可以同时读取共享内存中存储的图像数据,实现了usb摄像头的数据分流。此外,由于仅由写内存服务进程通过usb端口读取usb摄像头采集的图像数据,因此单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

本申请实施例提供的方法,通过创建共享内存,并基于写内存服务进程,通过usb摄像头的端口读取usb摄像头采集的图像数据,并将图像数据存入共享内存,以供各个客户端进程从共享内存中读取图像数据,使得多个客户端进程可以同时读取共享内存中存储的图像数据,实现了usb摄像头的数据分流,且单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

基于上述实施例,步骤130之后还包括:

将共享内存的物理地址映射到客户端进程的逻辑地址空间,得到对应客户端进程的共享内存逻辑地址,以供客户端进程根据共享内存逻辑地址读取共享内存中存储的图像数据。

具体地,客户端进程无法直接根据共享内存的物理地址进行内存访问,并且在操作系统中,每个进程都有属于该进程本身的进程控制块和地址空间,并且都有与其对应的页表,用于将该进程的地址空间内的虚拟地址与内存的物理地址进行映射。因此,为了使多个客户端进程可以读取共享内存中存储的数据,可以将共享内存的物理地址映射到各个客户端进程的逻辑地址空间,得到对应客户端进程的共享内存逻辑地址。即,根据各个客户端进程的逻辑地址空间的布局方式,将共享内存的物理地址分别映射到各个客户端进程的逻辑地址空间中。基于映射得到的对应各个客户端进程的共享内存逻辑地址,各个客户端进程可以利用自己的页表将对应的共享内存逻辑地址转换为物理地址,且各个客户端进程转换得到的物理地址均对应系统内存中的同一块空间,即共享内存。基于转换得到的物理地址,各个客户端进程即可访问共享内存,并读取其中存储的图像数据。

本发明实施例提供的方法,通过将共享内存的物理地址映射到客户端进程的逻辑地址空间,得到对应客户端进程的共享内存逻辑地址,使得客户端进程可以根据共享内存逻辑地址读取共享内存中存储的图像数据。

基于上述任一实施例,图2为本申请实施例提供的内存空间管理方法的流程示意图,如图2所示,该方法还包括:

步骤210,获取当前系统内存的空间占用率;

步骤220,若当前系统内存的空间占用率高于预设阈值,则结束写内存服务进程,并清空共享内存,以及删除对应的共享内存逻辑地址。

具体地,当终端设备上的系统内存空间较为紧张时,为了避免终端设备上运行的其他进程无法正常工作,此时可以将共享内存占用的内存空间让渡出来,以供其他更重要的进程使用。因此,可以监控当前系统内存的空间占用率。若获取得到的当前系统内存的空间占用率高于预设阈值,例如90%,此时系统内存空间已十分紧张,因此可以暂停通过共享内存读取usb摄像头数据的方式,结束写内存服务进程,并清空共享内存中存储的图像数据,以归还内存空间。在结束写内存服务进程并清空共享内存后,各个客户端进程无法再通过共享内存读取usb摄像头采集的图像数据,因此也可以将各个客户端进程对应的共享内存逻辑地址删除。

本发明实施例提供的方法,通过获取当前系统内存的空间占用率,若当前系统内存的空间占用率高于预设阈值,则结束写内存服务进程,并清空共享内存,以及删除对应的共享内存逻辑地址,避免数据获取影响整个终端设备的正常运行。

基于上述任一实施例,步骤110具体包括:

监听usb摄像头的设备状态,并获取usb摄像头的配置信息;

其中,配置信息包括usb摄像头采集图像的帧率以及采集的图像分辨率。

具体地,在监听usb摄像头的设备状态时,还可以获取usb摄像头的配置信息,以根据具体连接到终端设备上的usb摄像头的具体配置情况,调整数据获取过程中的相应配置,从而提高数据获取的准确性。其中,配置信息包括usb摄像头采集图像的帧率以及采集的图像分辨率。此处,采集图像的帧率为usb摄像头每秒采集的图像数量,可以体现usb摄像头采集图像的速率,帧率越大,usb摄像头采集图像的速率越快。而采集的图像分辨率则可以体现usb摄像头采集的图像清晰度以及图像大小,图像分辨率越大,图像越清晰且图像所需的存储空间越大。

基于上述任一实施例,共享内存的存储空间是基于usb摄像头采集的图像分辨率确定的。

具体地,由于图像分辨率越大,图像所需的存储空间越大,为了避免在将usb摄像头采集的图像数据存储到共享内存中时,由于共享内存存储空间有限,无法将当前采集的图像数据存储到共享内存中,或是将尚未被客户端进程读取的图像数据删除,导致在数据存储过程中丢帧,可以基于usb摄像头采集的图像分辨率确定共享内存的存储空间大小。其中,图像分辨率越高,共享内存的存储空间越大。由于共享内存的存储空间是基于usb摄像头采集的图像分辨率确定的,因此共享内存的存储空间既能满足数据存储的需求,也不会因为分配过大存储空间从而影响其他进程的工作。

本申请实施例提供的方法,基于usb摄像头采集的图像分辨率确定共享内存的存储空间大小,可以避免在数据存储过程中丢帧,同时避免分配过大存储空间从而影响其他进程的工作。

基于上述任一实施例,图3为本申请实施例提供的数据存储方法的流程示意图,如图3所示,步骤130具体包括:

步骤131,基于usb摄像头的图像采集帧率,通过usb摄像头的端口读取usb摄像头采集的图像数据;

步骤132,若共享内存的存储空间已满,则删除共享内存中存储时间最早的若干个图像数据,并将当前读取的图像数据存入共享内存中。

具体地,帧率越大,usb摄像头采集图像的速率越快,为了避免在数据获取过程中由于数据读取速率太慢丢帧,需要以更快的速率进行数据读取。因此,可以以usb摄像头的图像采集帧率为数据读取速率,通过usb摄像头的端口读取usb摄像头采集的图像数据,以跟上图像采集的速率。若当前共享内存的存储空间已满,则可以删除共享内存中存储时间最早的若干个图像数据,以腾出空间存放当前读取的图像数据。由于共享内存的空间足够大,在逐渐存满共享内存的存储空间过程中,最早存入共享内存的图像数据已被各个客户端进程读取,因此可以删除存储时间最早的若干个图像数据,并将当前读取的图像数据存入共享内存中。

本申请实施例提供的方法,基于usb摄像头的图像采集帧率,通过usb摄像头的端口读取usb摄像头采集的图像数据,可以避免在数据读取过程中丢帧。

基于上述任一实施例,图4为本申请实施例提供的usb摄像头数据获取方法的流程示意图之二,如图4所示,该方法应用于终端设备的客户端中,该方法包括:

步骤410,开启客户端进程;

步骤420,基于客户端进程,从共享内存中读取usb摄像头采集的图像数据;

其中,图像数据是写内存服务进程通过usb摄像头的端口读取并存入到共享内存的。

具体地,本申请实施例提供的方法应用于终端设备的客户端应用中。首先,开启客户端进程。其中,每个客户端应用分别对应一个客户端进程,例如onvifserver进程,算法分析进程等,客户端进程用于对共享内存进行数据读取操作。

当客户端进程感知到共享内存中的数据发生了更新时,可以从共享内存中读取usb摄像头采集的图像数据,以进行后续处理。其中,图像数据是写内存服务进程通过usb摄像头的端口读取并存入到共享内存的。此处,写内存服务进程会预先在系统内存中开辟出一块内存空间,作为共享内存。随后,usb摄像头开始采集图像数据,并等待写内存服务进程读取该图像数据。与此同时,写内存服务进程会通过usb摄像头的usb端口读取其采集的图像数据,并将读取的图像数据按顺序存储到共享内存中。然后,客户端进程即可从该共享内存中读取上述图像数据。由于usb摄像头采集的图像数据被写内存服务进程读取并存入到了共享内存中,因此客户端进程可以读取共享内存中存储的图像数据,实现usb摄像头的数据分流。此外,由于仅由写内存服务进程通过usb端口读取usb摄像头采集的图像数据,而客户端进程不与usb摄像头直接进行数据交互,因此单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

本申请实施例提供的方法,基于客户端进程,从共享内存中读取usb摄像头采集的图像数据,其中,图像数据是写内存服务进程通过usb摄像头的端口读取并存入到共享内存的,使得客户端进程可以读取共享内存中存储的图像数据,实现了usb摄像头的数据分流,且单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

基于上述任一实施例,图5为本申请实施例提供的数据获取方法的流程示意图,如图5所示,步骤420具体包括:

步骤421,将共享内存的共享内存逻辑地址转换为物理地址;

步骤422,基于共享内存的物理地址,读取共享内存中存储的图像数据。

具体地,为了使客户端进程可以读取共享内存中存储的数据,可以将该客户端进程对应的共享内存逻辑地址转换为物理地址。即,根据各个客户端进程的逻辑地址空间的布局方式,将客户端进程对应的共享内存逻辑地址转换为共享内存的物理地址。基于转换得到的共享内存的物理地址,客户端进程可以在内存中定位到共享内存,并读取其中存储的图像数据。

本发明实施例提供的方法,通过共享内存的共享内存逻辑地址转换为物理地址,基于共享内存的物理地址,读取共享内存中存储的图像数据,使得客户端进程可以根据共享内存逻辑地址读取共享内存中存储的图像数据。

基于上述任一实施例,图6为本申请实施例提供的usb摄像头数据获取方法的流程示意图之三,如图6所示,该方法包括:

当usb摄像头开启且连接到终端设备上时,usb摄像头会开始设备初始化。与此同时,中间件会开启写内存服务进程,并创建共享内存。

共享内存创建完毕后,将共享内存的物理地址映射到各个客户端进程的逻辑地址空间中,得到对应各个客户端进程的共享内存逻辑地址。本申请实施例中客户端进程为onvifserver进程和算法分析进程。

usb摄像头开始采集图像数据,并等待写内存服务进程读取该图像数据。写内存服务进程通过usb摄像头的端口从usb设备中读取图像数据,并将读取的数据写入共享内存。然后,判断写内存服务进程是否存活,若存活则重复执行上述数据读取和数据写入的操作;若写内存服务进程已被结束,则删除共享内存的物理地址映射的共享内存逻辑地址。当写内存服务进程将读取的usb摄像头采集的图像数据写入到共享内存后,onvifserver进程和算法分析进程均可以根据对应的共享内存逻辑地址从共享内存中读取图像数据,并进行相应的数据处理操作。

以网络视频监控为例,图7为本申请实施例提供的数据流向示意图,如图7所示,当usb摄像头采集到图像数据后,图像数据会被中间件上的写内存服务进程读取并存储到共享内存中,然后各个客户端进程,即onvifserver进程和算法分析进程可以从共享内存中读取图像数据,实现数据分流。其中,流向onvifserver进程的数据流视为主码流,而流向算法分析进程的数据流视为副码流。随后,onvifserver进程可以将自身读取的图像数据,以及算法分析进程根据读取的图像数据进行相应处理后的数据,通过rtsp协议传输至远端的nvr设备上。

下面对本申请提供的usb摄像头数据获取装置进行描述,下文描述的usb摄像头数据获取装置与上文描述的usb摄像头数据获取方法可相互对应参照。

基于上述任一实施例,图8为本申请实施例提供的usb摄像头数据获取装置的结构示意图之一,如图8所示,该装置包括:设备监听单元810、共享内存创建单元820和数据获取单元830。

其中,设备监听单元810用于监听usb摄像头的设备状态;

共享内存创建单元820用于若usb摄像头为初始化状态,则基于写内存服务进程创建共享内存;

数据获取单元830用于基于写内存服务进程,读取usb摄像头采集的图像数据,并将图像数据存入共享内存,以供各个客户端进程从共享内存中读取图像数据。

本申请实施例提供的装置,通过创建共享内存,并基于写内存服务进程,通过usb摄像头的端口读取usb摄像头采集的图像数据,并将图像数据存入共享内存,以供各个客户端进程从共享内存中读取图像数据,使得多个客户端进程可以同时读取共享内存中存储的图像数据,实现了usb摄像头的数据分流,且单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

基于上述任一实施例,该装置还包括:

地址空间映射单元,用于将共享内存的物理地址映射到客户端进程的逻辑地址空间,得到对应客户端进程的共享内存逻辑地址,以供客户端进程根据共享内存逻辑地址读取共享内存中存储的图像数据。

本发明实施例提供的装置,通过将共享内存的物理地址映射到客户端进程的逻辑地址空间,得到对应客户端进程的共享内存逻辑地址,使得客户端进程可以根据共享内存逻辑地址读取共享内存中存储的图像数据。

基于上述任一实施例,该装置还包括内存空间管理单元,图9为本申请实施例提供的内存空间管理单元的结构示意图,如图9所示,内存空间管理单元具体包括:

空间占用率获取单元8401,用于获取当前系统内存的空间占用率;

清空单元8402,用于若当前系统内存的空间占用率高于预设阈值,则结束写内存服务进程,并清空共享内存,以及删除对应的共享内存逻辑地址。

本发明实施例提供的装置,通过获取当前系统内存的空间占用率,若当前系统内存的空间占用率高于预设阈值,则结束写内存服务进程,并清空共享内存,以及删除对应的共享内存逻辑地址,避免数据获取影响整个终端设备的正常运行。

基于上述任一实施例,设备监听单元810具体用于:

监听usb摄像头的设备状态,并获取usb摄像头的配置信息;

其中,配置信息包括usb摄像头采集图像的帧率以及采集的图像分辨率。

基于上述任一实施例,共享内存的存储空间是基于usb摄像头采集的图像分辨率确定的。

本申请实施例提供的装置,基于usb摄像头采集的图像分辨率确定共享内存的存储空间大小,可以避免在数据存储过程中丢帧,同时避免分配过大存储空间从而影响其他进程的工作。

基于上述任一实施例,图10为本申请实施例提供的数据获取单元的结构示意图,如图10所示,数据获取单元830具体包括:

usb端口读取单元831,用于基于usb摄像头的图像采集帧率,通过usb摄像头的端口读取usb摄像头采集的图像数据;

写入单元832,用于若共享内存的存储空间已满,则删除共享内存中存储时间最早的若干个图像数据,并将当前读取的图像数据存入共享内存中。

本申请实施例提供的装置,基于usb摄像头的图像采集帧率,通过usb摄像头的端口读取usb摄像头采集的图像数据,可以避免在数据读取过程中丢帧。

基于上述任一实施例,图11为本申请实施例提供的usb摄像头数据获取装置的结构示意图之二,如图11所示,该装置包括:客户端进程开启单元1110和数据读取单元1120。

其中,客户端进程开启单元1110用于开启客户端进程;

数据读取单元1120用于基于客户端进程,从共享内存中读取usb摄像头采集的图像数据;

其中,图像数据是写内存服务进程通过usb摄像头的端口读取并存入到共享内存的。

本申请实施例提供的装置,基于客户端进程,从共享内存中读取usb摄像头采集的图像数据,其中,图像数据是写内存服务进程通过usb摄像头的端口读取并存入到共享内存的,使得客户端进程可以读取共享内存中存储的图像数据,实现了usb摄像头的数据分流,且单次数据的获取过程中,仅需一次数据编解码,即可实现数据分流,提高了数据获取的效率,降低了数据获取的性能损耗。

基于上述任一实施例,图12为本申请实施例提供的数据读取单元的结构示意图,如图12所示,数据读取单元1120具体包括:

地址转换单元1121,用于将共享内存的共享内存逻辑地址转换为物理地址;

读取单元1122,用于基于共享内存的物理地址,读取共享内存中存储的图像数据。

本发明实施例提供的装置,通过共享内存的共享内存逻辑地址转换为物理地址,基于共享内存的物理地址,读取共享内存中存储的图像数据,使得客户端进程可以根据共享内存逻辑地址读取共享内存中存储的图像数据。

本申请实施例提供的usb摄像头数据获取装置用于执行上述usb摄像头数据获取方法,其实施方式与本申请提供的usb摄像头数据获取方法的实施方式一致,且可以达到相同的有益效果,此处不再赘述。

图13示例了一种电子设备的实体结构示意图,如图13所示,该电子设备可以包括:处理器(processor)1310、通信接口(communicationsinterface)1320、存储器(memory)1330和通信总线1340,其中,处理器1310,通信接口1320,存储器1330通过通信总线1340完成相互间的通信。处理器1310可以调用存储器1330中的逻辑指令,以执行usb摄像头数据获取方法,该方法包括:监听usb摄像头的设备状态;若所述usb摄像头为初始化状态,则基于所述写内存服务进程创建共享内存;基于所述写内存服务进程,通过所述usb摄像头的端口读取所述usb摄像头采集的图像数据,并将所述图像数据存入所述共享内存,以供各个客户端进程从所述共享内存中读取所述图像数据。

此外,上述的存储器1330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例提供的电子设备中的处理器1310可以调用存储器1330中的逻辑指令,实现上述usb摄像头数据获取方法,其实施方式与本申请提供的usb摄像头数据获取方法的实施方式一致,且可以达到相同的有益效果,此处不再赘述。

另一方面,本申请还提供一种计算机程序产品,下面对本申请提供的计算机程序产品进行描述,下文描述的计算机程序产品与上文描述的usb摄像头数据获取方法可相互对应参照。

所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的usb摄像头数据获取方法,该方法包括:监听usb摄像头的设备状态;若所述usb摄像头为初始化状态,则基于所述写内存服务进程创建共享内存;基于所述写内存服务进程,通过所述usb摄像头的端口读取所述usb摄像头采集的图像数据,并将所述图像数据存入所述共享内存,以供各个客户端进程从所述共享内存中读取所述图像数据。

本申请实施例提供的计算机程序产品被执行时,实现上述usb摄像头数据获取方法,其实施方式与本申请提供的usb摄像头数据获取方法的实施方式一致,且可以达到相同的有益效果,此处不再赘述。

又一方面,本申请还提供一种非暂态计算机可读存储介质,下面对本申请提供的非暂态计算机可读存储介质进行描述,下文描述的非暂态计算机可读存储介质与上文描述的usb摄像头数据获取方法可相互对应参照。

本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的usb摄像头数据获取方法,该方法包括:监听usb摄像头的设备状态;若所述usb摄像头为初始化状态,则基于所述写内存服务进程创建共享内存;基于所述写内存服务进程,通过所述usb摄像头的端口读取所述usb摄像头采集的图像数据,并将所述图像数据存入所述共享内存,以供各个客户端进程从所述共享内存中读取所述图像数据。

本申请实施例提供的非暂态计算机可读存储介质上存储的计算机程序被执行时,实现上述usb摄像头数据获取方法,其实施方式与本申请提供的usb摄像头数据获取方法的实施方式一致,且可以达到相同的有益效果,此处不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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