一般的信息機房會透過監控溫度的方式,掌握目前空調運作的情況,但是會等到溫度高到發出alarm,這代表機房空調實際上已經故障了一段時間,如何在空調冷氣故障的當下就發出警告訊息呢?我們可以使用計算機視覺來偵測空調主機的燈號,當故障燈亮起時,便立即發出預警通知。而且,計算機視覺不代表一定要用AI,單純透過OpenCV的圖像處理,便能達到偵測燈號的目的,因此,我們只需要一片樹莓派加上USB Camera便可作到。(更簡便的方案是Arduino搭配簡單的RGB色彩偵測模塊,也可以滿足偵測燈號的效果,但是在后續警報的分析處理上,并無法像樹莓派作得更多元)。
目前機房內使用MegaTec的NetProbe Lite偵測溫度,該裝置內建web server,可瀏覽各時段的溫濕度記錄,以及發送email及SMS通知。
偵測位置
樹莓主機和鏡頭放置于空調主機對面,注意USB Camera的位置要固定不能隨意移動,因為稍后我們將偵測空調主機的控制號號位置,此位置在畫面中必須是固定不變的。
空調主機的控制燈號
相關的影像分析技術
如何取得相片中某一區域
以相片中的空調控制燈號區為例,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來說,各顏色的范圍是:
(https://www.pyimagesearch.com/2014/08/04/opencv-python-color-detection/)
例如,當某個pixel(或某一區平均)的R, G, B值,如果滿足:
4
另外一種更好用的方式是先將影像轉為HSV color space。
由于HSV有獨立channel for光強度,因此可應用于偵測更為復雜的顏色區域。例如,當我們想要得影像中某一范圍的顏色,只要給予顏色范圍,便可取出影像中屬于該顏色的影像。
下方范例為輸入一張圖片,并取得紅色區域。
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。
-
空調
+關注
關注
11文章
1227瀏覽量
58573 -
監控
+關注
關注
6文章
2204瀏覽量
55171 -
控制燈
+關注
關注
0文章
9瀏覽量
8858
原文標題:使用圖像處理偵測機房空調燈號
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論