一种摄像头实时视频数据处理方法及装置与流程

文档序号:30695708发布日期:2022-07-09 17:03阅读:505来源:国知局
一种摄像头实时视频数据处理方法及装置与流程

1.本发明涉及视频处理技术领域,具体涉及一种摄像头实时视频数据处理方法及装置。


背景技术:

2.mipi-csi接口摄像头在许多嵌入式产品,如行车记录仪、执法仪、取证系统中应用广泛,在一些应用场景中,需要多进程的视频图像采集处理,但mipi-csi接口摄像头无法被不同的应用程序同时开启,即一个进程中已开启了某个摄像头,在另一个进程中则无法再打开同一个摄像头,摄像头资源被独占。
3.gstreamer多媒体框架可以通过代码直接封装命令来做工程开发,采用插件实现方式,程序代码重用性好,根据业务需要可以灵活裁剪插件,具有良好的扩展性,适合在嵌入式和移动端等应用领域。gstreamer,可以实现采集,编码,解码,渲染,滤镜等一系列媒体解决方案。在嵌入式图像处理设备系统中,有时需要多进程处理实时视频数据,一个进程开启了摄像头(如本专利采用的mipi-csi2接口的摄像头),资源被独占,需要获取视频数据的多个应用进程无法再直接获取视频数据,通常采用udp网络发送rtp流,或通过服务器推流方式(rtsp流、rtmp流),可以实现多进程的实时视频数据交互,现有专利文献cn202011554999.6公开了一种多进程共享数据的高并发视频处理方法及系统,以及现有专利文献cn110891178a公开了一种视频实时渲染的方法和装置,均需通过编解码过程进行处理。但对于低功耗的嵌入式图像处理设备,上述方法都涉及编解码的过程,以及加载微服务器推流,增加了系统的功耗,特别是多路视频时会造成系统负荷过大,运行缓慢。


技术实现要素:

4.针对现有技术的不足,本发明的目的旨在提供一种摄像头实时视频数据处理方法及装置。
5.为实现上述目的,本发明采用如下技术方案:
6.一种摄像头实时视频数据处理方法,包括以下步骤:
7.s1、依据配置摄像头数量,开启对应数量线程管理每一路实时视频;
8.s2、在每个所述线程中构建一个gstreamer管道负责每一路视频数据的转换处理;
9.s3、所述gstreamer管道中至少包括一个视频源组件,通过所述视频源组件获取所述摄像头输出的所述视频数据;
10.s4、所述gstreamer管道中至少包括一个推理组件,通过所述推理组件将所述视频数据转换为所需要处理的视频帧格式,得到视频帧数据;
11.s5、所述gstreamer管道中包括应用程序交互组件,所述应用程序交互组件将所述视频数据帧放入环形共享内存区;
12.s6、将需要获取视频数据的多个应用进程连接至所述环形共享内存区,从所述环形共享内存区中读取所述视频帧数据进行处理。
13.进一步地,所述步骤s2还包括:所述gstreamer管道中每个组件属性通过标准的gobject对象方法实现。
14.进一步地,所述视频源组件为v4l2src。
15.进一步地,所述应用程序交互组件为appsink组件。
16.进一步地,所述appsink组件的采样数据传递至所述环形共享内存区的步骤包括:
17.s01、设置每个所述gstreamer管道中appsink组件的“emit-sianals”属性为“true”;
18.s02、连接所述appsink组件的“new-sample”采样信号;
19.s03、在消息回调函数中,将接收到的所述视频帧数据存储至构建的所述环形共享内存区的缓存区内,设置所述视频帧数据的段名;
20.s04、在需要获取视频数据的多个应用进程中依据所述段名连接上对应的所述环形共享内存区,获取实时视频帧数据进行处理。
21.一种摄像头实时视频数据处理装置,所述摄像头实时视频数据处理装置用于实现所述摄像头实时视频数据处理方法的硬件装置,包括摄像头组、数据主控单元以及显示控制屏,所述摄像头组与所述数据主控单元连接,所述数据主控单元与所述显示控制屏连接,所述主控单元包括数据处理模块、通讯模块和可移动存储介质,所述数据主控单元通过所述通讯模块与需要获取视频数据的客户端连接,所述数据处理模块外接移动存储介质,所述通讯模块通过usb与所述数据处理模块进行数据传输。
22.进一步地,所述摄像头组为mipi摄像头组。
23.进一步地,所述通讯模块为4g/wifi模块。
24.进一步地,所述摄像头组中的摄像头通过usb与所述数据处理模块连接,所述通讯模块通过圆柱形固件与数据处理模块固定连接,所述通讯模块位于所述数据处理模块的上方,所述数据处理模块为nvdia jeson系列开发板。
25.本发明的有益效果在于:
26.本发明一种摄像头实时视频数据处理方法及装置,通过以gstreamer流媒体框架进行流式管道设计,采集摄像头实时视频数据,创建连接共享内存,依据摄像头输出的流模式格式,通过配置相应的插件将视频数据格式转换为输出所需要的格式,最后连接应用程序交互组件将视频数据帧,存储至一个共享内存环形缓冲区,其它需要获取视频数据的多个应用进程从共享内存中获取实时视频数据,实现实时视频数据的多进程交互,解决摄像头开启的资源独占性问题。同时相较直接调用opencv库函数进行视频采集处理,基于本发明方法和装置所形成系统的采集效率也有一定程度的提高。
附图说明
27.图1为本发明基于gstreamer框架的实时视频多进程数据交互接口设计示意图;
28.图2为本发明appsink组件的采样数据传递至所述环形共享内存区的流程示意图;
29.图3为本发明一种摄像头实时视频数据处理装置中各模块连接方式示意图;
30.图4为本发明一种摄像头实时视频数据处理装置其中一种实施例的结构示意图;
31.附图标记:1、数据处理模块;2、摄像头组;3、4g/wifi模块。
具体实施方式
32.下面,结合附图以及具体实施方式,对本发明做进一步描述:
33.如图1所示,一种摄像头实时视频数据处理方法,包括以下步骤:
34.s1、依据配置摄像头数量,开启对应数量线程管理每一路实时视频;
35.s2、在每个所述线程中构建一个gstreamer管道(pipeline)负责每一路视频数据的转换处理;所述gstreamer管道中的每个组件属性通过标准的gobject对象方法实现,使用gobject的方法可以对gstreamer实行查询、设置、获取属性的值。
36.s3、所述gstreamer管道中至少包括一个视频源组件,通过所述视频源组件获取所述摄像头输出的所述视频数据;所述视频源组件为v4l2src。
37.s4、所述gstreamer管道中至少包括一个推理组件,通过所述推理组件将所述视频数据转换为所需要处理的视频帧格式,得到视频帧数据;
38.s5、所述gstreamer管道中包括应用程序交互组件,所述应用程序交互组件将所述视频数据帧放入环形共享内存区;所述应用程序交互组件为appsink组件。
39.s6、将需要获取视频数据的多个应用进程连接至所述环形共享内存区,从所述环形共享内存区中读取所述视频帧数据进行处理。
40.进一步地,如图2所示,gstreamer管道的视频数据与共享内存的交互实现方法(以appsink组件(应用程序交互组件)为例),所述appsink组件的采样数据传递至所述环形共享内存区的步骤包括:
41.s01、设置每个所述gstreamer管道中appsink组件的“emit-sianals”属性为“true”;
42.s02、连接所述appsink组件的“new-sample”采样信号;
43.s03、在消息回调函数中,将接收到的所述视频帧数据存储至构建的所述环形共享内存区的缓存区内,设置所述视频帧数据的段名;
44.s04、在需要获取视频数据的多个应用进程中依据所述段名连接上对应的所述环形共享内存区,获取实时视频帧数据进行处理。
45.如图3所示,一种摄像头实时视频数据处理装置,所述摄像头实时视频数据处理装置用于实现摄像头实时视频数据处理方法的硬件装置,包括摄像头组2、数据主控单元以及显示控制屏,所述摄像头组2与所述数据主控单元连接,所述数据主控单元与所述显示控制屏连接,所述主控单元包括数据处理模块1、通讯模块和可移动存储介质。所述数据主控单元通过所述通讯模块与需要获取视频数据的客户端连接,所述数据处理模块外接移动存储介质,所述通讯模块通过usb与所述数据处理模块进行数据传输。
46.摄像头组2用于输出实时视频,摄像头组2至少包括一个摄像头;数据处理模块1用于获取视频数据,并将视频数据转换为所需要处理的视频的视频帧格式,得到视频帧数据,进一步将视频数据帧放入环形共享内存区。可移动存储介质用于存储视频帧数据;所述通讯模块可将视频帧处理数据传输至客户端的应用进程;通讯模块可将视频帧处理数据传输至一个或多个应用进程;显示控制屏作为数据处理模块的显示和控制终端,可配置也可不配置。
47.进一步地,所述摄像头组2为mipi摄像头组。
48.进一步地,所述通讯模块为4g/wifi模块3。
49.进一步地,所述摄像头组2中的摄像头通过usb与所述数据处理模块连接,所述通讯模块通过圆柱形固件与数据处理模块1固定连接,所述通讯模块位于所述数据处理模块1的上方,所述数据处理模块为nvdia jeson系列开发板。
50.如图4所示,多路摄像头2通过usb连接至数据处理模块1,4g/wifi模块3通过圆柱形固件与数据处理模块1模块结构固定在一起,以usb接口传输数据,数据处理模块1可外接移动存储介质。
51.以本地录像和目标对象检测应用的双进程交互应用为例进一步阐述本发明的技术方案:
52.本实施例中的数据处理模块1采用nvdia jeson系列jetson nano开发板,搭配ubuntu 18.04.2linux操作系统,配置两路veye-mipi-327型号摄像头,输出图像分辨率1920*1080,实现开机启动本地录像和目标对象检测应用,目标对象检测采用了基于darknet的深度学习框架。
53.开启两路线程,每个线程中构建一个gstreamer管道负责每一路视频数据的转换处理,管道中采用v4l2src组件获取mipi-csi2摄像头输出的uyvy模式数据,采用nvvidconv视频转换器组件将视频帧转换为420i模式,通过tee组件分发管道流数据,通过queue2创建两路src pad分发线程:
54.一路通过编码器组件omxh264enc将视频流编码为h264格式,matroskamuxc组件将接收到数据封装转换为matroskal流,最后连接filesink组件将管道流写入文件进行录像存储。另一路继续加载视频格式转换组件nvvidconv,将视频流数据从420i格式转换bgrx格式,加载videoconvert视频色彩空间转换组件,将接收到的bgrx格式数据转换为bgr格式,最后连接appsink组件将bgr格式的视频数据帧,放入环形共享内存区,darknet目标检测应用进程连接到创建的环形共享内存区,从环形共享内存区中获取图像数据进行车辆目标检测。
55.在开源darknet目标检测原框架中,视频数据通过opencv软件库调用摄像头视频采集函数得到,两路视频目标检测处理帧率为6帧左右,通过构建gstreamer管道,将视频数据存至共享内存,目标检测进程从共享内存中获取视频帧数据,两路视频目标检测处理帧率可达8帧左右,系统处理效率有一定程度的提高。
56.本实施例通过构建基于gstreamer管道设计,将摄像头的实时视频数据传递至环形共享内存区,与其它应用进程进行交互,解决了摄像头独占性问题,实现了独立进程的视频的本地录像和车辆对象的目标识别,车辆目标识别应用进程中,相较于直接调用opencv视频函数来获取图像帧,本发明的方法对视频采集效率也有一定程度的提高,改善了目标识别进程的运行效率。
57.对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1