随着科学技术和工业生产的高速发展,用于存放各类物品的仓库数量也不断增加,但由于目前中小型企业及工厂对仓库的监控普遍缺乏信息化管理,导致不断有仓库盗窃和起火爆炸的事故产生[1]。据统计,人为因素和环境因素是当前仓库事故的最主要原因,因此,加强对进出仓库人员及现场环境参数的监控和管理是解决问题的最有效途径[2]。
于是本文根据以上情况,设计了一种基于以太网和OpenCV的仓库监控系统。该系统可以实时获取仓库的多种环境参数,并能够查看仓库的现场视频。当检测到环境参数超出阈值或监控视频出现异常时,系统会做出预警并进行记录,因此本系统具有高度的研究意义和应用价值。
本文设计的仓库监控系统主要分为参数采集系统、视频监控系统、数据交互系统三个部分。系统可以对仓库现场进行环境参数采集和实时视频监控,当检测到出现环境参数异常、有人员进出、有火焰产生等异常现象时会自动预警。仓库的环境参数和异常记录均保存在本地数据库中,用户可以通过浏览器访问本地服务器,查看这些信息。
本系统中,参数采集系统通过温湿度传感器、一氧化碳传感器等多种传感器来采集和上传仓库现场的各类环境参数。
视频监控系统通过USB摄像头采集监控视频,并结合采集到的监控视频及环境参数对仓库现场进行异常现象检测同时进行记录。
数据交互系统主要采用B/S(浏览器/服务器)模式,通过以太网进行网络通信。用户在局域网内,通过任何带有浏览器的PC机即可访问本系统的服务器,查看仓库现场的环境参数、监控图片及异常记录。该模式需要在本地服务器端移植嵌入式Web服务器,并结合HTML技术设计网页界面实现人机交互。
本系统通过以太网实现网络通信,从而完成环境参数及监控视频流等数据的传输。
本文设计的仓库监控系统硬件部分主要包括环境参数模块,视频图像模块以及负责通信的以太网模块。其总体设计框图,如图1所示。
环境参数模块挂载了多种传感器,主要负责采集所在区域内的温度、湿度、二氧化碳、一氧化碳、臭氧和粉尘这六种环境参数。由于传感器的输出方式不同,主芯片需要丰富的USART接口以及定时器,所以环境参数模块主芯片采用基于Cortex-M4处理器的STM32F407ZGT6芯片[3]。其模块整体构成如图2所示。
视频图像模块上通过USB接口挂载了摄像头模块,可实时采集仓库现场的监控视频。本模块采用的摄像头为罗技C525网络摄像头,其分辨率高达720P,自带光线矫正和自动对焦的功能,可根据不同照明条件和人物移动进行微调,且具有折叠式便携的特点,利于嵌入式使用[4]。由于本模块对图形加速和视频编码具有较高要求,主控芯片采用了三星公司出产的基于Cortex-A8处理器的S5PV210芯片,相比同公司出产的S3C6410及S5PC110等产品,其运行速度、缓存大小、图形引擎都具有更大的优势[5]。此外本模块还带有蜂鸣器,通过PWM进行控制,用来对视频检测到的异常情况及时预警。其模块整体构成如图3所示。
为满足数据传输的传输速率快、传输稳定性高以及传输量大等需求,本系统采用以太网模块将环境参数模块、视频图像模块和PC端连入同一局域网。其中,连接环境参数模块的以太网模块采用W5500芯片,连接视频图像模块的以太网模块采用友善之臂配套的DM9000AEP芯片,其网口均选用标准的RJ45网口。以太网传输具有传输速率高、传输距离远且扩展性强的优点,在同一局域网内,可实现数据的稳定传输,符合本系统的要求。
本文设计的仓库监控系统软件部分分为参数采集系统、视频监控系统和数据交互系统,其中,参数采集系统是运行在环境参数模块上的,而视频监控系统和数据交互系统运行在视频图像模块上。
综合系统的稳定性和实时性,本系统在环境参数模块上移植了μC/OS-II嵌入式实时操作系统,在视频图像模块上移植了Linux操作系统。
其中,μC/OS-II是一种基于优先级的可抢占式的内核,具有可开源、可移植、可裁剪、可固化、多任务、抢占式等特点的嵌入式操作系统,被广泛应用于各类单片机、微控制器以及数字信号处理器等产品的开发[6]。其移植主要工作包括:下载相关源代码、修改os_cpu.h和os_cpu_c.c等与处理器相关文件、编写用户程序并烧入芯片。
Linux是一个从Unix演变而来的多用户多任务操作系统,具有免费开源的特点,是一款多用户、多任务、支持多线程和多CPU的操作系统。它以网络为核心,支持32位和64位的底层硬件,非常适合嵌入式中软硬件可裁剪的特点,具有低价的成本和高度的可定制性[7]。其移植主要工作包括:搭建交叉开发环境、选择和移植Bootloader、配置并编译系统内核、移植根文件系统。
由于参数采集系统需要完成多种类型传感器的数据实时采集和传输,实现多任务的并发执行,因此建立了数据采集任务和数据上传任务。本系统为每一路传感器均设置了单独的任务,包括有温湿度采集任务、二氧化碳采集任务、一氧化碳采集任务、臭氧采集任务和粉尘采集任务,这里统称为数据采集任务。而数据上传任务主要负责实现通信,通过以太网将数据进行上传。
数据采集系统的工作流程,如图4所示。
视频监控系统的主程序采用多线程的方式实现,主要由三个部分组成。第一部分负责与环境参数模块建立连接,循环获取其采集的环境参数;第二部分负责视频的采集和处理,通过视频来显示监控环境及环境参数,并根据视频分析仓库中人员进出情况和火焰产生情况;第三部分负责与PC端建立连接,将处理过的视频以流的形式进行发送。其系统流程如图5所示。
与环境参数模块建立连接的部分,采用Socket接口结合TCP/IP协议实现通信连接,然后循环获取并解析环境参数。在本系统中还移植了Sqlite数据库用来记录解析的参数,记录的数据按照记录时间进行排序。
负责视频采集和处理的部分,利用OpenCV库中的函数调用底层的V4L2实现视频的采集,接着通过对视频的动态分析判断人员进出和火焰产生情况,同时将获取到的实时环境参数写入图像之中。若检测到有环境参数超过阈值、有人员进出、有火焰产生中的任何一种情况,系统都会判定检测到异常现象并将检测结果计入数据库中,此外,当前的这一帧视频图像也会以jpg的格式保存在本地服务器中。
负责与PC端建立连接的部分,同样采用了Socket接口结合 TCP/IP 协议建立通信这一方式。系统启动后会监听客户端的连接请求,每当有一个不同IP地址的客户端请求连接后,系统都会创建一个新的子线程与客户端进行连接并将处理过的实时视频以流的形式发送至该客户端,当连接终止后再关闭这个子线程。
在本系统中移植的OpenCV库是一个开源的跨平台计算机视觉软件库,具有高效和轻量级的优点,可以运行在Linux、Windows和Android等多种操作系统上[8]。V4L2则是Linux中关于音频和视频设备开发的内核驱动,使程序具有发现设备和操作设备的能力[9]。在本系统中,可以直接通过OpenCV中的VideoCapture类来调用V4L2,从而完成摄像头设备的初始化、启用等操作。
本系统对视频进行动态分析采用了帧差法、RGB算法和HIS算法相结合的方式,可以检测是否有火焰或运动物体出现。其中,帧差法主要针对运动目标的提取,利用了背景像素在一段时间内稳定而运动目标像素会发生变化这一原理,将相邻两帧图像进行差分运算,取像素差的绝对值,之后通过阈值化处理得到二值化图像,从而提取出运动的目标区域[10]。而RGB算法和HIS算法主要针对火焰的识别,RGB算法是将图像分成R、G、B三个通道,即红色分量、绿色分量和蓝色分量,然后设定火焰模型对应的分量阈值范围,如果目标图像满足则判定为火焰目标。然而火焰图像还包括许多其他图像特征,为了更准确地判定火焰目标,本文同时采用了HIS算法,HIS算法是通过色度、饱和度、亮度三要素进行图像识别的,当两种算法均判定检测到的动态目标为火焰时才最终判定检测到火焰目标[11]。
在本系统中,利用了OpenCV强大的图像处理功能,首先对获取到的图像信息进行预处理;再根据帧差法将图像进行背景相减,得到目标前景图;然后利用阈值分割方法,设定适当的阈值,删除一些过高或过低的像素点;接着对图像进行滤波去噪处理以便分割出较清晰明确的动态轮廓;最后结合RGB算法和HIS算法分析该动态轮廓是否为火焰,若不为火焰则判定为一般运动物体。其视频分析流程如图6所示。
数据交互系统主要采用B/S模式实现。B/S是一种由服务器和网络浏览器构成的计算机系统架构,通过Web服务器实现其交互功能,于是本系统移植了Boa服务器。Boa服务器是一个支持运行在Linux系统下的小巧高效的嵌入式Web服务器,因此可以移植在视频图像模块上[12]。但作为一种单任务Web服务器,Boa服务器只能按照顺序完成用户的请求,而不会创建出新的进程来处理并发连接请求。因此本系统还需要结合CGI编程技术,CGI编程能够扩展服务器功能,创建出新的进程来处理用户请求,可以将数据库中的环境参数、异常现象记录以及保存在服务器本地的监控图片实时反馈给浏览器[13]。
此外用户还可以通过客户端接收实时监控视频,该方式通过C/S(客户端/服务器)模式实现,需要设计客户端界面,当用户通过客户端与服务端建立连接后即可查看仓库现场的实时监控视频。该模式中由视频监控系统作为服务端,PC机作为客户端,通信方式采用Socket接口结合TCP/IP 通信协议建立通信[14]。为了设计简洁美观的客户端界面,本文使用OpenCV结合常用的图形界面应用程序开发框架QT进行设计,实现了对实时监控视频的播放、暂停等基本功能[15]。
对设计完成后的系统进行整体测试,在网络环境中,用户可以利用PC端连接本系统所在的局域网,通过在浏览器输入IP地址来访问该系统。经过用户名和密码登录之后将进入系统界面首页,点击“监测图片”功能,可查看当检测到火焰或人员出入时所拍摄的照片,如图7所示,其监测图片中火焰和运动人物的轮廓已被彩色线条框出。
点击“监测数据”功能,可以查看当前监测到的环境参数,其数据会实时更新,刷新间隔为十秒,如表1所示。
表1 仓库监测数据 导出到EXCEL
时间 | 温度(℃) | 湿度 (%) | CO2浓度 (ppm) | CO浓度 (ppm) | 臭氧浓度 (ppb) | 粉尘浓度(μg/m3) |
Wed Nov 25 15∶56∶26 2020 |
17.3 | 54.7 | 10 | 939 | 17 | 35.9 |
Wed Nov 25 15∶56∶16 2020 |
17.1 | 54.7 | 11 | 867 | 17 | 37.8 |
Wed Nov 25 15∶56∶06 2020 |
16.9 | 55.9 | 12 | 922 | 17 | 36.4 |
Wed Nov 25 15∶55∶56 2020 |
16.9 | 55.5 | 11 | 917 | 18 | 29.4 |
Wed Nov 25 15∶55∶46 2020 |
16.7 | 55.9 | 12 | 935 | 17 | 34.4 |
Wed Nov 25 15∶55∶36 2020 |
17.4 | 54.7 | 10 | 852 | 17 | 35.6 |
点击“异常记录”功能,可查看出现异常情况的具体事件和对应时间,这里的异常情况包括人员进出、发现火焰以及环境参数超过阈值范围这三种情况,显示“1”表示当前时刻此事件发生,“0”表示当前时刻此事件未发生,若出现环境参数异常情况,会记录当前出现异常的参数,如表2所示。
表2 仓库异常记录 导出到EXCEL
时间 |
人员进出 | 发现火焰 | 参数异常 |
Thu Nov 26 17∶04∶45 2020 |
0 | 1 | 0 |
Thu Nov 26 17∶04∶29 2020 |
0 | 0 | PM2.5 |
Thu Nov 26 17∶03∶50 2020 |
1 | 0 | 0 |
Thu Nov 26 17∶02∶59 2020 |
0 | 0 | H |
Thu Nov 26 17∶01∶47 2020 |
0 | 0 | T |
Thu Nov 26 17∶01∶03 2020 |
1 | 0 | 0 |
当系统检测到新的异常现象时,会跳出弹框进行预警,提示“发现异常现象,请注意查验!”,如图8所示,同时仓库异常记录也会随之更新。如果检测到的异常现象为火焰,系统还会启动蜂鸣器报警,持续时间为十秒钟。
此外,用户可以通过登录客户端连接本系统以获取当前环境的实时监控视频,经测试,视频流畅、文字清晰,满足系统要求,如图9所示。
为满足当前对仓库监控技术自动化、智能化的需求,本文设计了一种基于以太网和OpenCV的仓库监控系统,实现了现场视频及多种环境参数的实时监控,经过测试,本系统能正常稳定地工作,准确地获取实时监测数据与监控视频,同时准确识别和记录参数超标、人员进出、产生火焰等环境的异常情况,符合设计要求,具有较高的应用价值。
标签:
上一篇: 数据仓库与企业关键指标分析方法初探
下一篇: 小型仓库管理系统分析与设计