CommissarMa / Chemical_Window_Manage_System

化学实验橱窗管理系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Chemical_Window_Manage_System

化学实验橱窗管理系统
针对于化学实验室中人员离开时忘记关闭实验橱窗的情况,利用图像处理技术对橱窗开闭情况进行实时检测,并上传相应截图。
管理系统界面:
main_gui

需求概述

在上班时间段内,每隔一定时间对实验室的橱窗进行开闭检测,并将检测结果实时上传到中控程序的接口供其分析使用。
主要功能如下:

  • 1)实验室摄像头通道的添加、编辑、连接、删除。
  • 2)每个通道下橱窗的添加、编辑、删除。
  • 3)上层数据接口的地址配置
  • 4)检测间隔时间的设置
  • 5)保存所有配置到文件、加载所有配置到程序
  • 6)橱窗开闭检测并返回结果到上层数据接口

软件架构图

architecture

模块说明

  • 1)摄像头配置:配置摄像头通道的信息,包含两个参数。
    参数一:通道名称,用于表明该摄像头所属实验室。
    参数二:通道的RSTP地址,用于与摄像头进行连接。例如:rtsp://root:wo2016017@192.168.1.40/axis-media/media.amp。 配置完摄像头后进行连接,应能显示出摄像头画面。
  • 2)橱窗配置:配置橱窗的信息,包含两个参数以及橱窗红色贴条出现的位置。
    参数一:橱窗名称
    参数二:橱窗id,其具有唯一性,是与数据接口进行检测结果的上传数据中的一个参数。
    红色贴条出现的位置:使用矩形框表示红色贴条出现的位置,分别为矩形的左上顶点的x,y坐标以及矩形的长和宽。
  • 3)接口配置:配置检测结果上传的数据接口。
    例如:http://111.196.111.169:8023/APIdemo/DemoData
  • 4)时间间隔配置:填写实际需要的检测时间间隔。
    例如:5分钟
  • 5)保存与加载配置:当配置完1)至4)步骤之后,可以选择保存当前所有配置,配置文件采用json的数据格式,并可以在重新打开程序时进行加载,方便用户使用。
  • 6)橱窗开闭检测: 核心**:通过检测红色贴条是否在矩形框中来判断橱窗的开闭状态。在传统的RGB颜色空间中,判断泛红系的误差较大,因此采用HSV颜色空间进行泛红系的识别,然后对场景中红色贴条的像素点数量进行不断实验,找到一个合适的阈值来有效排除非红色贴条的红色物体的干扰。
  • 7)结果上传:将结果上传至配置好的接口。上传的结果采用json数据格式,其包含4个参数。
    参数一:橱窗id
    参数二:橱窗的开闭状态,开为0,关为1
    参数三:当前的视频帧,采用base64编码方式上传
    参数四:上传的时间戳

程序依赖配置

思路说明

  • 1)绘制出整个GUI界面(组件化的**):整个界面由MMenuBar(菜单栏)、PicPanel(视频框)、TreePanel(树结点)、MessagePanel(信息框)组成。菜单栏包括“修改检测间隔时间”,“修改数据接口Url”,“保存配置”,“加载配置”4个选项。视频框由两个绘图层组成,底层显示视频帧,上层用于绘制橱窗矩形框。树结点用于存储每个实验室的信息以及每扇橱窗的信息。信息框用于显示检测结果。
  • 2)实现窗体矩形区域的绘制:通过重写Swing中Label控件的一系列Graphics方法来进行实现。
  • 3)橱窗检测方法:读取当前监控视频帧,颜色空间从RGB转为HSV,然后采用Opencv中的HSV颜色检测函数,判断该矩形区域中H分量属于(0-20)的像素点数量,如果大于设定的阈值,就认为检测到红色贴条,即橱窗是关闭状态。实际应用过程中,当光照正常时,所有红色像素点的H分量都是在0-20之间的,如果光照过暗,红色像素点的H分量将不在0-20之间。因此目前用于白天正常上班的时间内是没有问题的。
  • 4)因为在使用过程中,需要人工设置:每个实验室的名称和对应摄像头的IP地址,每个橱窗的名称以及人工绘制的矩形框区域,每次检测的间隔时间,检测结果上传的接口IP地址。因此,需要人工设置的东西比较多,如果每次都重新配置一次,工作量太大。所以使用了Json格式来存储和解析这些配置。
  • 5)检测结果上传:和接口的通信也是通过传送Json格式的数据来进行的。

管理系统使用方法

详见管理系统使用说明

About

化学实验橱窗管理系统

License:Apache License 2.0


Languages

Language:Java 100.0%