汪 庆,谭红春,孙大勇,车梦晴
(安徽中医药大学 医药信息工程学院,安徽 合肥 230012)
基于SDK的实验室视频监控系统开发
汪庆,谭红春,孙大勇,车梦晴
(安徽中医药大学医药信息工程学院,安徽合肥230012)
为实现高校开放式实验室安全管理,设计了一个基于HIKVISION SDK的视频监控系统.该系统利用海康威视视频采集卡,使用面向对象程序设计思想实现,具有用户管理模块、实时预览模块、录像回放模块等功能,在实验室安全管理方面具有一定的应用价值.
开放式实验室;HIKVISION SDK;视频采集卡;视频监控系统
随着高校创新实践型教育模式的提出,实验教学对于提高大学生实践应用能力显得尤为重要,传统的管理方式已经很难以满足要求,开放式实验室管理[1]还在不断地探索之中.视频监控技术[2]可以实现实时图像监控、突发时间现场重现,是实现智能化实验室管理的关键.
本系统采用HIKVISION公司开发的视频采集卡,使用板卡自带的软件开发包SDK[3],利用面向对象软件设计方法,实现了一种成本低、易实现的实验室视频监控系统.
视频采集卡是安防行业目前应用广泛的视频采集设备,主要是从摄像头获取视频信号并转换为数字信号进行实时预览录像.系统使用的硬件设备为DS-4004HC视频采集卡,该板卡采用了先进的H.264视频压缩编码,可以实现4路的DCIF/2CIF/CIF/QCIF实时编码压缩,可单独调整每个通道设置参数,性能十分稳定.
SDK是向软件开发者提供特定的硬件平台、操作系统下开发工具集合,开发者通过调用DLL文件中的接口函数实现相关的功能,SDK开发已应用于许多各种领域[4][5].本系统使用DS-4004HC板卡SDK,通过面向对象程序设计的思路进行二次开发.板卡SDK提供的文件主要有:动态链接库DS40xxSDK.dll,库文件DS40xxSDK.lib,头文件HikVisionS-dk.h等,通过调用SDK提供的API函数,依次完成系统各个模块的功能.
3.1系统功能需求分析
基于成本的考虑,本系统的硬件部分利用机房现有微机,利用主板的扩展PCI插槽安装4004HC卡,利用该板卡完成视频采集功能,使用同轴电缆分别连接视频采集卡和摄像头.机房视频监控拓扑图如图1所示.
图1
通过对实验室监控的实际需求进行分析,该监控软件应该能够实现以下几个基本功能:(1)能够实现不同用户的权限管理;(2)能够实现实时多路视频图像的预览;(3)能够根据录像计划或者手动地进行录像存储;(4)能够对存储的视频内容进行查询和回放.因此,根据以上需求将监控系统功能分为相关功能模块,如图2所示.
图2
本系统程序启动运行的过程是:首先进行用户验证,然后进行板卡初始化获取DSP信息、获取到系统设置的默认参数,最后进入主监控画面,进行实时监控,或进行计划录像等操作.软件主要功能实现的流程如图3所示.
3.2系统模块详细设计
按照面向对象程序设计的方法,分别对不同的功能模块分别创建功能类,使用SDK提供的库函数和MFC函数完成软件的相关功能.软件主要模块包括:
图3
用户管理模块CUserDlg类:将使用系统的用户分为系统管理员admin和一般用户user;
监控主界面模块CMoniterDlg类:初始化视频监控画面区域,参数设置按钮区域,显示监控状态区域.
图像参数设置模块CSetDlg类:设置录像画面参数:DCIF,2CIF,4CIF,D1,监控点名称时间OSD,录像文件打包长度等.
录像计划模块CPlanDlg类:设置每个监控场所的计划录像的时间段.
录像回放模块CReplyDlg类:根据事件发生的需求,以时间段和监控点为条件检索系统中的录像片段,进行回放查看.
系统软件主要类图及函数接口如图4所示:
图4
3.3系统关键功能的函数实现
监控主界面初始化:
BOOLCMoniterDlg:OnInitDialog()
{
GetRecordPlan();//获取系统录像参数;
GetCameraParam();//获取摄像机的设置相关参数;
GetTimeInfo();//获取当前系统时间信息;
GetSpaceInfo();//获取当前可用录像磁盘信息;
ShowWindow();//显示监控主画面;
OnInitDialog();//初始化视频监控主窗口;
}
视频窗口初始化:
InitDSPs();//初始化DSP,返回可用编码通道数;
ChannelOpen();//打开通道,返回句柄,并读入摄像机参数;
StartVideoPreview();//开启视频预览;
SetOsdDisplayMode();//设置视频叠加信息:如时间,监控点名称;
录像功能:
SetDefaultQuant();//设置图像量化系数,量化系数越大图形质量就会越低,码率也就越低;
CreateThread();//启动录像线程;
StartVideoCapture();和StopVideoCapture();//对通道数据流进行获取,将视频文件按固定时间间隔进行打包,对生成视频文件按照时分秒的格式进行命名,这样有利于录像文件的检索.
3.4用户界面设计
本系统使用C++面向对象语言,以VC++6.0为开发工具,利用海康威视板卡SDK,基于MFC对话框进行程序设计.为使监控主界面满足简单直观的设计,采用了基于对话框的程序设计,需要把主要功能按钮显示集中于软件主界面上,故将界面划分为:视频显示区:显示当前监控区域预览;参数设置区:设置监控点名称,录像质量,回放查询等;系统状态区域:显示实时时间,可用录像磁盘信息;录像状态区:显示当前正在录像的通道情况.如图5所示.
图5
系统测试的硬件环境是XP系统,内存2G,CPU双核2.5GHZ,DS-4004HC视频采集卡,四路分布于实验室的监控摄像头,经过不间断录像,系统稳定正常.
本文利用面向对象技术和HIKVISION SDK提供的API实现了实验室视频监控系统.该系统硬件扩展较为简单,软件设计模块功能分类清晰,界面简洁易用,可以实现实时监控、录像检索、回放等基本功能,能够满足实验室开放式管理的基本公共安全需求,具有一定的实用性.
〔1〕张艳芬,等.新形势下高校实验室开放管理与运行机制的研究[J].实验技术与管理,2013,30(3):180-183.
〔2〕黄凯奇,等.智能视频监控技术综述[J].计算机学报,2015,38(6):1093-1118.
〔3〕海康威视.DS-40xx系列板卡SDK_V4.31(for Windows)[EB/OL].http://www.hikvision.com/cn/download _more_404.html#prettyPhoto.
〔4〕陈景帅,等.基于Speech SDK的机器人语音交互系统设计[J].北京联合大学学报(自然科学版),2010,24(1):25-29.
〔5〕李梅,等.基于Virtools SDK的虚拟实验室BB模块开发方法研究[J].计算机与现代化,2013(1):67-70.
TP391
A
1673-260X(2016)04-0044-02
2016-03-26
安徽省质量工程项目(2015sysx011);安徽中医药大学青年科研基金项目(2015qn007);2015安徽省大学生创新创业项目(201510369185)