APP下载

基于OpenCV的图书馆座位共享系统研究

2018-07-30蔡美嫦华南理工大学广州学院广州510813

机械工程师 2018年7期
关键词:彩色图像座位无人

蔡美嫦(华南理工大学 广州学院,广州510813)

0 引 言

随着越来越多的学生到图书馆学习而图书馆的座位并未增加,出现了较多的书本(或其他物品)占座现象,导致座位入座率降低。近年来,许多高校对图书馆座位共享开展了研究,而物体识别、跟踪是其中的一项关键技术。此外,该共享系统也可以用于自助餐厅座位选择、火车站候车选择座位等领域。该共享系统主要包括判断座位是否有人、座位无人的时长和给出可用座位有哪些3个步骤。如果能大规模使用该系统,将会给学生入座带来极大的便利。

1 OpenCV简介

OpenCV是采用C/C++语言编写的,可以应用在Linux/Windows/Mac等操作系统上的开源的计算机视觉库。OpenCV的设计目标是执行速度尽量快,主要关注实时应用。因为OpenCV是采用优化过的C代码编写的,所以他能够充分地利用多核处理器的优势。另外,OpenCV的一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关程序。OpenCV包含500多个函数,覆盖了计算机视觉的许多应用领域,如工厂产品检测、医学成像、机器人等。OpenCV还提供了Python、Ruby、MATLAB以及其他语言的接口。

2 座位共享系统的工作流程

本文研究基于OpenCV的座位共享系统技术,其工作流程如图1所示。首先在图书馆的自修区装摄像头监控自修区,然后依次进行图像采集、图像预处理,接着判断座位是否有人,如果座位无人则进行座位无人时长判断,经过以上步骤即可给出座位信息。该共享系统是使用OpenCV 2.4.9,在Linux环境下使用QtCreator进行编程实现。

3 座位是否有人判断算法

3.1 灰度化处理

首先,将拍摄的自习室图像进行灰度化处理,即把RGB彩色图像转换成灰度图像,进行初步处理,为后面的步骤做准备。此处使用OpenCV中的转换函数:

cvtColor(currentBGRFrame,currentGaryFrame,COLOR_BGR2G RAY);

其中currentBGRFrame表示输入的彩色图像,currentGaryFrame表示输出的灰度图像。

输入的彩色图像和经过灰度变换的自修室监控图如图2和图3所示。由于经过灰度处理后还需要对图像进行去噪处理,所以采用中值滤波的效果会相对理想。

图1 位置共享系统工作流程

3.2 座位位置的设置

图2 输入彩色图像

图3 输出灰度图像

由于自修室的空间较大,事先框选出座位的位置即设置感兴趣区域(ROI,region of interest),可以专注和简化工作过程,提高接下的座位有无人判断的精度。定义ROI区域有两种方法:

1)使用表示矩形区域的Rect:

imageRIO=image(Rect(x,y,width,heigh));

其中x,y分别为指定矩形左上角的坐标,width,heigh分别为矩形的长和宽。

2)指定感兴趣行或列的范围(Range):

imageROI=image(Range(,),Range(,));

其中Range是指从起始索引到终止索引(不包括终止索引)的一段连续序列。

本共享系统采用第一种方法。

3.3 座位是否有人判断

在对图像进行感兴趣区域(ROI)定义后,就可以开始检测ROI区域内是否有人,本共享系统使用三帧差法,通过判断ROI区域有无动态物体来推测座位是否有人。主要步骤如下:

1)首先在监控视屏中按先后顺序定义任意连续3帧图片的灰度图为pre_2_gray_frame,pre_1_gray_frame,current_gray_frame。

2)前面两帧的灰度图的差为:

pre_frame_difference=pre_1_gray_frame-pre_2_gray_frame后面两帧的灰度图的差为:

current_frame_difference=current_gray_frame-pre_1_gray_frame

3)取绝对值:

abs_frame_difference=abs(pre_frame_difference);其中abs()函数的作用是返回整型参数的绝对值。

4)位深改变:

图4 判断座位有无人效果图

abs_frame_difference.convertTo (abs_frame_difference,CV_8UC1,1,0);

如图4所示,只要检测到有运动物体,就会有黄色框框着。由此可以判断该位置有人。三帧差法的优点是实时性高。但是应对光骤变能力较弱,目前还在改进中。

4 结语

本文研究了OpenCV在人物识别、跟踪的具体应用,在Linux系统中使用OpenCV2.4.9和QtCreator通过C++语言实现了对监控摄像头监控到的自修室情况进行分析。经过多次实验测试,总体识别效果满意,有一定的实用性。但是对于颜色相近的运动物体识别能力和应对光骤变能力还有待提高。目前我们的工作是进一步完善该系统,并实现在手机上实时查看图书馆自修室座位情况。

猜你喜欢

彩色图像座位无人
换座位
基于FPGA的实时彩色图像边缘检测
无人战士无人车
反击无人机
巴士上的座位
基于最大加权投影求解的彩色图像灰度化对比度保留算法
诗到无人爱处工
无人超市会流行起来吗?
换座位
基于颜色恒常性的彩色图像分割方法