APP下载

基于LabVIEW的实时监控视频调用的三种模型研究

2020-02-22杨慧闻张嘉琪

电脑知识与技术 2020年36期

杨慧闻 张嘉琪

摘要:当前各行业的各种类型的监控摄像头的安装越来越普及,在交通测流、检测车辆违章、银行安保、工厂运行监控、产品加工等各方面都需要进行实时监控,并且对所获取到的监控视频进行分析和视觉应用(包括但不限于测量测定、颜色处理、识别处理、定位引导等),为了解决监控摄像头的实时监控影像的在LabVIEW中的调用,提出了三种基于LabVIEW平台上的针对两种不同类型(ip摄像头,usb摄像头)的监控视频画面的实时调用,利用LabVIEW平台的视觉图像处理模块VDM(Vision Development Module)、视频流SDK二次开发、VLC多媒体播放器调用等技术编写程序模型,实现实时监控画面在LabVIEW中的调用。

關键词:实时预览;LabVIEW;SDK二次开发;VDM

中图分类号:TP311.1      文献标识码:A

文章编号:1009-3044(2020)36-0238-05

Abstract: at present, the installation of various types of surveillance cameras in various industries is becoming more and more popular, which needs real-time monitoring in traffic flow measurement, vehicle violation detection, bank security, factory operation monitoring, product processing and other aspects, as well as analysis and visual application of the obtained surveillance video (including but not limited to measurement and measurement, color processing, identification processing, setting In order to solve the call of the real-time monitoring image of the monitoring camera in LabVIEW, three kinds of real-time calls for two different types of monitoring video images (IP camera, USB camera) based on LabVIEW platform are proposed, and the vision development module VDM (vision development) of LabVIEW platform is used Module), secondary development of video stream SDK, call of VLC multimedia player and other technologies are used to write program models to realize the call of real-time monitoring screen in LabVIEW.

Key words: Live preview; LabVIEW; SDK secondary development; VDM

1 背景

当前随着我国经济的快速发展和消费者安全意识的逐渐提高,各个行业的根据其自身需求,都会大量使用到各种类型的实时监控摄像头,促使监控摄像头在视频影像主流应用层面快速发展。尤其是在这些场景下: 测定/测量包括原始零件的测量、关键尺寸的检查、角度、范围、直径、尺寸、中心线、垂直等的测定;图像识别和图像处理包括图像的标识、字符、二维码、条码的定位、图像的灰度化、二值化处理和图像的准确识别;定位/引导包括先进的自动化技术或机器人设备、零部件的高精度装配和完成其他精细生产工艺[1]。虽然实时监控摄像头产品作为前端应用产品其技术的发展也已经可以到达4k左右的规模,但对于其后端产品相关技术的深入研究和应用存在一定的不足,尤其在如何实现实时的监控视频影像在其开发应用平台过程中的管理和调用是其面临的主要技术问题之一。

LabVIEW是一种新兴的网络虚拟仪器(virtual instrumention),利用图形化的编辑语言,采用框图式的程序设计,将计算机开发平台与实验室虚拟仪器联系起来,是未来仪器开发的一种新趋势。LabVIEW集成了适用于多种协议的软硬件开发和各种类型数据采集卡的应用功能,内置便于实际操作TCP/IP、ActiveX控件的库函数。

本文针对两种监控摄像头类型(IP网络摄像头[2]和USB摄像头)实时画面的调用,设计了三种模型进行研究。在对网络摄像头实时画面的调用研究中,设计了一种基于摄像头设备视频流源SDK二次开发的影像实时调用程序模型,另一种是基于VLC多媒体播放器的ActiveX控件在LabVIEW程序中的调用,通过RTSP取流协议实现IP摄像头实时预览的程序模型。此外,在对USB摄像头的实时影像调用的研究中,设计一种基于LabVIEW中VDM(Vision Development Module)视觉开发工具实时调用监控画面的程序模型,三种模型如图1所示:

2 针对IP网络摄像头实时调用的程序模型

2.1 设备介绍

海康威视—DS红外点阵筒型网络摄像机

设备型号DS-2CD3T86FWDV2-I3S  6mm

电源:12V

如图2、图3所示:

2.2 基于摄像头视频源SDK二次开发的视频实时调用程序模型

摄像头SDK开发工具(software development kit)是由制造商海康威视基于其自有IP通信协议自主研发的,为其产品包括不限于高清数字摄像机、视频监控产品、网络摄像机、无人机产品、客户端视频软件、手持可穿戴产品等提供无线网络配套服务,用于对无线网络或有线局域网的访问和对产品控制软件的应用进行二次开发。SDK主要的功能[3]包括实时预览、产品控制、设备升级、设备的数据格式化和恢复、无线访问和传输数据、设备使用情况日志等。程序设计模型要成功实现对监控设备视频的实时预览和控制功能,需要基于制造商海康威视的源SDK动态链接库的实时预览和控制功能,进行二次开发。

DLL(Dynamic Link Library,动态链接库)以后缀名.dll为格式[4],包含海康威视产品二次开发的代码、数据、多个应用程序的可执行文件,程序的注册登录函数和实时预览函数等函数名和变量符号都包含在其引入库(.lib)中。所以当程序需要使用一个DLL来调用数据库函数执行动态开发时,只需要手动链接一个DLL中的引入库文件。其中的函数代码和应用程序运行时的数据不会同时被应用程序复制,只有当应用程序运行时,才将自动加载所需DLL的引入库文件。

设备的DLL动态链接库在一般的情况下不能直接独立的运行,也就是程序不会自行去发送或接收消息。动态链接库往往看起来像是一些单独的文件,内包含有可链接的多个函数,当某一个库函数名被调用,其才会在内存中加载一次,避免了多次调用相同库函数产生的资源冗余。程序按下列六步骤进行编写:

1)提前设置子VI,将所需控件添加到连接端。

2)在DLL库中选择调用函数名,所用到的库函数见5),建立新的VI,选择端口和路径的时候我们需要指定该端口到海康威视的SDK文件夹。在使用函数值表示输出的端口类型上,选择新的输出Pointto value,然后选中“Specify path or diagram”,表示系统会动态检查和调用该输出DLL文件,此时端口和路径取决于最上端的路径或者输入端,Libraryname or path里输入的端口和路径可能无效。在输出parameters页,系统会自动检查和添加DLL的输入、输出端口,如果添加不完整,则应该需要手动检查DBL,输入:Value;DBL相应输出为Pointerto Value即可。

3)输出终端前应检查是否有给每个DLL赋初始值,如果需要输出的终端数组没有初始值,则表示整个DBL数组以及不能正常进行数据输出。len、 len2分别为一个输入数组、输出数组的个数,需将这两个数组参数设置默认为与实际的输入数组初始值大小一致。

4)在调用规范中选择stdcall调用方式。在sdk调用的规范里面分别规定了对库函数的两种执行调用的方式,即分别执行stdcall(WINAPI)和Call调用。两者的主要区别在于是分别由被执行的调用者或调用者自己负责清理和创建堆栈。此次程序采用的是海康威视摄像头提供的DLL,选择了stdcall调用的规范。

5)对于线程选用默认状态为在UI线程中运行即可。

6)在库名/路径选项下选择正确的sdk开发文件地址,以及实时调用所用到的库函数。实时调用预览需要通过库函数名和运行流程如图4所示。调用库函数对话框中需要将调用规范设置为stdcall(WINAPI)调用,在参数页中设置调用库函数返回值的类型为Void,添加参数设置input参数设置为—维双精度浮点型数组,数组返回值格式可以作为数组的数据指针。通过添加参数设置input length为整型传值参数,添加output参数为一维32位整型数组。

根据sdk二次开发,所设计的实现实时调用监控画面的LabVIEW程序图前后面板如图5,图6所示:

2.3 基于VLC多媒体播放器的程序模型

VLC(VideoLan)是一款支持多种视频播放格式的开源播放器,可以实时解析通过URL(统一资源定位系统,uniform resource locator)方式取流获得的设备通道、地址、用户名和密码等信息。RTSP (Rapid Spanning Tree Protocol)为取流的协议,取到的码流后需要经过解码才能显示,可以通过 Activex显示控件(ocx显示控件)在程序中实现实时调用监控影像的设计。LabVIEW中ActiveX程序允许播放动画,可以加载VLC播放器实现取流过程。

RTSP取流 URL规定:

rtsp://username:password@//ch/

URL描述:

rtsp://设备用户名和密码@<设备IP地址>//ch<通道号>/<码流类型>

程序所使用的海康威视网络摄像头的RTSP取流为:rtsp://admin:asd123123@192.168.3.25:554/h264/ch33/main/av_stream

VLC的ActiveX控件

因为视频编码采用VLC进行串流,所以在程序中设计实时预览时相应的也要使用VLC解码(调用VLC Active X控件)。下图7,8为实现基于VLC编写的实时调用监控画面的LabVIEW程序圖,若复制程序,则可支持多路摄像头;

3 针对USB网络摄像头实时调用的程序模型

3.1 基于LabVIE的VDM工具的USB摄像头的实时预览模型

VDM即Vision Development Module(视觉开发模块)该模块是用来在LabVIEW中实现对图像和视频流进行开发的工具包,包含了图像多种图像处理和编辑的库函数[6],程序按下述本程序按下七步骤进行编写:

1)首先使用图像创建函数IMAQ Create,此函数主要参数为Border Size(边界值的大小),当使用图像处理函数子选板进行对像素的处理,需要确定一个参考图中相邻两个像素的边界值。当给定了边界的像素数,而像素的值取决于所使用的图像处理函数。对于图像名默认设置为任意字符串即可,而图像类型要采用U32,因为调用的视频图像为彩色图像。

2)使用摄像头函数IMAQdx Open Camera VI为用户打开现有的相机或其他设备,查看所有摄像头,同时查看需要添加摄像头的配置文件。

3)之后使用函数IMAQdx Close Camera VI为了停止对图像的获取,释放出为读取图像数据所占用的设备所需资源,然后关闭相机。

4)使用加载和抓拍函数IMAQdx Configure Grab VI。其主要作用于在相机设备的缓冲区内快速反复的加载和采集相机图像,同时快速复制图像。倘若在加载或调用函数时在IMAQdx Open Camera VI之前已经加载或调用此了函数的VI,则IMAQdx Configure Grab VI意味着函数使用了默认的相机设备cam0。取消函数IMAQdx Unconfigure Acquisition VI的加载和调用为了完全取消此函数在该步骤的配置获取的图像。

5)使用获取图像当前幀数的函数IMAQdx Grab VI。在上一个摄像头的函数中调用IMAQdx Configure Grab VI调用之后应该再次调用此VI。当图像类型与视频流输出类型不匹配时,函数会默认将图像转为合适格式。

6)删除图像函数IMAQ Dispose VI为设备释放内存空间。为使得程序运行的流畅且及时释放其占据的内存,新建的每一个图像都需要重新建立一个这样的VI。当最后运行结束的程序不再需要调用所需要的映像时调用函数IMAQ Dispose。

7)程序使用While循环程序结构方便连续同时运行多个图像的采集程序,只有在出现错误或者手动点击循环停止按钮时,循环方才自动停止,采集程序随即终止,且自动关闭已重新打开的摄像头,清除所有图像的缓存,释放系统内存[7]。

前面板:cam 0默认为计算机自带摄像头。拍照:在前面板上增加一个拍照按钮,在按下拍照按钮时,负责采集图像的程序启动,拍下一张照片,并显示到前面板,拍照功能通过Case结构实现,按钮在默认情况下,是0,按下时为1,松开又恢复为0。

LabVIEW的条件结构相当于C语言中的

if(表达式){……}

else{……}

和switch结构:

switch(表达式)

{case值1:语句1break;

case值2:语句2break;

default:语句nbreak;}

该设计有两个Case,即1和0,当输入值为1(真)时,即按下拍照按钮,拍照程序运行,否则,不运行拍照程序。

模型程序如图9,10所示

4 模型验证及结论

在调用海康威视高清摄像头作为模型设备运行程序时,在地址处填入与电脑同局域网地址为192.168.1.1,用户名为admin,设备密码为asd123123,程序运行均显示正确且流畅运行,运行结果如图11,图12,图13所示,三种程序模型皆能完全实现该视频设备监控影像的实时调用和预览。海康威视是国内先进监控设备制造商和开发者,在实现该设备的IP和USB两种类型的实时调用后,其他厂商的相同类型设备,只要基于设备源sdk或者编解码流,在本程序模型中均能正确完成实时调用和预览。

参考文献:

[1] 施滢.智能视频监控与检索系统开发[D].南京:南京理工大学,2016.

[2] 曾帅,李乐民,廖丹.一种基于视频转码与IP组播的媒体推送系统设计[J].计算机应用研究,2013,30(2):521-524.

[3] 夏寅昕.大型客机驾驶舱机组行为监测系统设计[D].上海:上海交通大学,2011.

[4] 李高升,周东明,何建国,等.LabVIEW中DLL文件的创建及其应用[J].现代电子技术,2005,28(5):24-25,30.

[5] 谢其德,张云云.动态链接库在LabVIEW中的高级应用[J].微计算机信息,2004,20(10):45-46.

[6] 兰晶.基于Labview的人脸识别系统的研究与实现[D].北京:北京邮电大学,2015.

[7] 李德尧,李和平.基于LabVIEW VDM的锁螺丝机器人控制系统设计[J].机床与液压,2018,46(23):61-64.

【通联编辑:谢媛媛】