• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于OpenCV的试验监测技术

朱云波 罗文豪
  
科学与财富
2023年11期
施耐德电气 中国 有限公司上海分公司电力实验室 上海 201203

打开文本图片集

摘  要:本文针对试验人员的痛点,将python作为开发接口,利用开源库OpenCV—计算机视觉与机器学习软件库进行了大量的测试与研究,所涉及的内容主要有:视频图像的采集、图像内容的判断、试验设备的控制及通信附件等,进而为研发一套代替试验人员现场目击的测试监控系统。

关键词:视频采集;图像判断;OpenCV;通信控制;Qt Designer

0 研究背景

随着各种电气、电子产品的不断迭代及创新,各实验室业务量不断的提高,各种长时间的现场人为监控占用了大量的人力资源,人为肉眼判断也对测试结果准确性造成了一定的错判率。因此迫切需要一种智能化监控系统或设备去帮助各类实验室减少人力资源的占用,提高实验质量。

计算机视觉是使用计算机及相关设备模拟生物视觉。它的主要任务就是像人类和许多其他类生物一样,通过对采集的图片或视频进行处理以获得相应场景的三维信息。

OpenCV可以应用但不仅限于以下场景:二维和三维特征提取、人脸识别系统、手势识别、人机交互、动作识别、物体识别、自动检查和监视、分割与识别、医学图像分析、运动跟踪等。

本文介绍一款如何利用OpenCV的自动检查和监视功能、串行通信控制来提高测试工程师日常测试效率的测试监控系统

1.基于OpenCV的测试监控系统

如下图1所示基于OpenCV的测试监测系统,分为样品状态检测、异常状态识别、报警与控制联动系统。样品状态检测主要靠监控摄像头持续采集样品实时状态。之后通过计算机软件中的图像识别系统进行监控区域选定、图像处理、异常判断。图像识别系统主要采用图像识别的二值化处理、目标区域的像素数量与初始状态的比对组成。经过一系列处理与判断后,输出报警信号及控制命令,第一时间通知相关测试工程师并及时自动停止测试设备,保存测试异常现象及相关信息。

2.监控、通信及控制

2.1硬件需求

主要硬件有计算机、USB转串口数据线、树莓派通信扩展板、测试设备或平台、摄像头。

树莓派扩展板是具有GSM(全球移动通信系统)和蓝牙功能。具有体积小、功耗低。可以实现发短信,蓝牙数据传输等功能。

2.2通信协议

串行通信是最常见的计算机通信方式,主要起到计算机与外部设备以及计算机之间的数据传输作用。常用于实时监控、近距离的人-机交换等通信任务,为了实现远距离传输可配合现有的电话网来实现。

3.软件设计

运用当前流行的开发软件Python。此项目软件架构如下图3所示,主要使用到了OpenCV(图像处理),PyQt5(UI界面),Serial(通讯与控制)这三个函数库来实现这套系统。

3.1图像处理

计算机所获得的图像信息,与人的肉眼有所不同。人可以直接辨别出一个物体的大小、形状、亮度、色彩等信息,而计算机通过一系列的算法来实现对物体的识别。

3.1.1 图像信息收集

通过cv2.VideoCapture捕捉的到每一帧画面其默认的色彩格式为RGB。RGB颜色空间是通过红绿蓝三种颜色分量组合而成,常用于显示系统,并不适合在图像处理中使用。首先,在真实环境中一块均匀的红色物体会受到光线、阴影等影响,在图像中呈现出不同的亮度,RGB的三个分量值都会随着亮度的不同发生较大变化。其次,人眼对于这三种颜色分量的敏感程度不同,很难准确判断出某一种颜色的三种分量值,不利于准确的捕捉我们所想要的特定颜色。HSV颜色空间相较传统的RGB更加接近人类对色彩的感受,所以需要用过cv2.cvtColor函数将色彩格式从RGB转换为HSV。

3.1.2 HSV颜色空间

HSV颜色空间是由Hue(色调),Saturation(饱和度)和Value(明度)组成。HSV颜色空间可以由下面这个模型来体现。

常见颜色HSV数值分布请见下表1:

对使用者来说HSV颜色空间可以帮助其更为直观、便捷地选取某一色系内所有明暗不同的颜色区域,更利于对图像的后期处理、识别与分割。

3.1.3 图像色彩识别的二值化处理

调用OpenCV函数库中的cv2.inRange(src, lower, upper)可以将我们所需要的目标颜色区域从复杂的环境背景中剥离开来。其中src指源图像,lower指图像中低于lower的值,其所对应的像素值将为 0;upper指图像中高于upper 的值,像素值变为 0 ,此外,所有范围内的像素值将变为255。这一步也就是我们常说的图像二值化,处理后的效果图如下图5所示:

3.1.4 图像滤波处理

在实际的环境中像素的识别会受到光线、角度等影响,二值化后的图像中常会混有噪声点,增加对目标对象捕捉的难度。因此,引入了cv2.medianBlur(src,ksize)中值滤波函数。其中,src为制定颜色剥离后的图像, ksize则为滤波的像素点(该是必须为大于1的奇数),以下图6为例,当ksize选取为9时,就会以底色黑色0为目标像素点,与周围邻近的8个点进行中值排序,并将中位数255赋值给目标像素点。然后依次对下一个点进行中值处理。

实际效果如下图7所示:

3.1.5 阈值判定与报警

通过coor 函数从视频中选择需要监测的区域:

If event == cv2.Event_LBUTTONDOWN

coor_x,coor_y = x , y

coor_m =[coor_x, coor_y]

coor = np.row_stack((coor,coor_m))

Width_choose = coor[2, 0] – coor[1, 0]

Height_choose = coor[2, 1] – coor[1, 1]

再二值化处理将监测区阈值颜色区域区分出来:

hsvim =

cv2.cvtColor(Video_choose,cv2.COLOR_BGR2HSV)

color_thresh = cv2.inRange(hsvim,color_min,color_max)

color_blur = cv2.medianBlur(color_thresh, 9)

再进行监测区域中的阈值内的像素点数值与报警阈值比较。超过报警阈值则软件会提示报警并主动停止测试设备,同时会通过树莓派通信开发板向工程师手机发送报警信息。

Color = cv2.countNonZero(color_blur)

If color > limit:

Ui_Form.printf(self,“报警”)

3.2 通信及控制

Python进行串行通信主要使用serial和tkinter库。Seriall库封装了对串口的访问。Tkinter是标准GUI库,使用tkinter可以快速的穿件GUI应用程序。本系统利用tkinter库进行串口通信上的开发,以保证报警信息及时发送至测试工程师和停止测试设备。

3.3 人机交互界面

项目的UI可视化界面使用Qt Designer来进行制作,从而实现人机交互。由Qt Designer平台所开发的用户界面如图8所示。在界面的左上角是选择监测用的摄像头。界面下方是一些图形处理参数及异常现象保存路径的选择。界面右侧会以滚动式呈现异常报警信息。

4.总结

此项目是一款基于OpenCV测试监测及控制系统。该系统中的软件通过视觉监控、串行通信向外部设备发送控制指令、发送报警短信来实现实验室测试系统的闭环监测及控制。

参考文献:

[1]刘瑞祯,于仕琪.OpenCV教程—基础篇[M].北京:北京航空航天大学出版社,2007

[2]史记征,崔俊.基于Python语言的串行通信实现方法分析[J].电脑知识与技术:学术版,2019,015(016):24-26

[3]于开花,李华龙.基于Qtdesigner插件机制的二次开发及应用[J].电脑知识于技术,2019,15(12):293-294

*本文暂不支持打印功能

monitor