全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 音视频/家电 >

使用图像处理侦测机房空调灯号

时间:2023-02-11 12:00

人气:

作者:admin

标签: 空调  控制灯  监控 

导读:一般的信息机房会透过监控温度的方式,掌握目前空调运作的情况,但是会等到温度高到发出alarm,这代表机房空调实际上已经故障了一段时间,如何在空调冷气故障的当下就发出警告讯...

一般的信息机房会透过监控温度的方式,掌握目前空调运作的情况,但是会等到温度高到发出alarm,这代表机房空调实际上已经故障了一段时间,如何在空调冷气故障的当下就发出警告讯息呢?我们可以使用计算机视觉来侦测空调主机的灯号,当故障灯亮起时,便立即发出预警通知。而且,计算机视觉不代表一定要用AI,单纯透过OpenCV的图像处理,便能达到侦测灯号的目的,因此,我们只需要一片树莓派加上USB Camera便可作到。(更简便的方案是Arduino搭配简单的RGB色彩侦测模块,也可以满足侦测灯号的效果,但是在后续警报的分析处理上,并无法像树莓派作得更多元)。

目前机房内使用MegaTec的NetProbe Lite侦测温度,该装置内建web server,可浏览各时段的温湿度记录,以及发送email及SMS通知。

侦测位置

树莓主机和镜头放置于空调主机对面,注意USB Camera的位置要固定不能随意移动,因为稍后我们将侦测空调主机的控制号号位置,此位置在画面中必须是固定不变的。

空调主机的控制灯号

0297dfba-a9a1-11ed-bfe3-dac502259ad0.png

相关的影像分析技术

如何取得相片中某一区域

以相片中的空调控制灯号区为例,crop该区的方法如下。

要取得相片中各位置的x, y pixels值,使用小画家即可,左下方会显示目前光标所在的x, y pixels值。

如何取得相片中某一区域的平均色彩值

defarea_info(img):

b, g, r = cv2.split(img)

meanb, std = cv2.meanStdDev(b)

meang, std = cv2.meanStdDev(g)

meanr, std = cv2.meanStdDev(r)

return (meanb[0][0], meang[0][0],meanr[0][0])

先使用cv2.split拆出RGB三个单色channel的影像,再使用cv2.meanStdDev可分别得到其平均值与标准偏差。

如何侦测并取得相片中的颜色

以RGB来说,各颜色的范围是:

02ed860e-a9a1-11ed-bfe3-dac502259ad0.jpg

(https://www.pyimagesearch.com/2014/08/04/opencv-python-color-detection/)

例如,当某个pixel(或某一区平均)的R, G, B值,如果满足:

4

另外一种更好用的方式是先将影像转为HSV color space。

由于HSV有独立channel for光强度,因此可应用于侦测更为复杂的颜色区域。例如,当我们想要得影像中某一范围的颜色,只要给予颜色范围,便可取出影像中属于该颜色的影像。

0300c732-a9a1-11ed-bfe3-dac502259ad0.png

下方范例为输入一张图片,并取得红色区域。

importcv2

importnumpy as np

importimutils

color_dict_HSV= {‘black’: [[180, 255, 30], [0, 0, 0]],

‘white’: [[180, 18, 255], [0, 0,231]],

‘red1’: [[180, 255, 255], [159,50, 70]],

‘red2’: [[9, 255, 255], [0, 50,70]],

‘green’: [[89, 255, 255], [36,50, 70]],

‘blue’: [[128, 255, 255], [90,50, 70]],

‘yellow’: [[35, 255, 255], [25,50, 70]],

‘purple’: [[158, 255, 255], [129,50, 70]],

‘orange’: [[24, 255, 255], [10,50, 70]],

‘gray’: [[180, 18, 230], [0, 0,40]]}

image =cv2.imread(“D:/wait/temp/last_0_25.jpg")

hsv =cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

light =np.array(color_dict_HSV[‘red2’][1])

dark =np.array(color_dict_HSV[‘red2’][0])

mask =cv2.inRange(hsv, light, dark)

output =cv2.bitwise_and(image,image, mask= mask)

cv2.imshow(“ColorDetected", imutils.resize(np.hstack((image,output)), width=900))

cv2.waitKey(0)

cv2.destroyAllWindows()

由于这次项目只要侦测灯号是否有亮,不需要判定颜色,因此我们只要使用RGB方式,判断该区域平均value是否有超过定义的threshold值(愈白或愈亮,代表该pixels的value愈大 (0-255)),若超过则可判定灯号有亮。

下方为机房开灯与关灯的两种状态,我们分别取两个区域,左上方的矩形区域用来侦测是否有开灯,右下方则为空调主机的灯号区,用来侦测灯号状态。由于机房有人员会进出,因此侦测是否开灯的区域,建议在上方天花板处,可避免人员经过造成亮度变化而发生误判。

实际运作

机房灯光被打开与关闭时,各会发一次notify到群组(信息部系统状态自动回报)。

在机房灯光未开的情况下,侦测到空调主机灯号亮了,则发出Notify到[Alarm]紧急通知群组。每隔三分钟持续的发送,直到机房灯光被打开(视为处理中)或空调灯号熄灭,才不会继续发Notify。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信