挑戰(zhàn)
在家里和辦公室里,人們很容易看到燈沒關(guān),即使附近幾乎沒有人。
除了花費(fèi)更多,這種照明對環(huán)境也有負(fù)面影響。我們越來越依賴有限的、不可再生的能源來發(fā)電,而這些能源經(jīng)常被浪費(fèi)。
雖然我們在家中的能源使用量是名義上的,但在辦公室中,使用量要多得多。因此,對環(huán)境和成本的負(fù)面影響要多得多。這需要我們采取積極行動。
當(dāng)張貼“請在離開前關(guān)燈”的標(biāo)志影響很小或沒有影響時,考慮到燈的數(shù)量、覆蓋面積和其他因素,損失的幅度更大。讓某人通過每次都關(guān)掉燈來解決過度照明的問題是不可行的。人類的記憶是易變的,不可依賴。
讓我們了解一下單個燈泡的影響。一個10瓦的燈泡每小時耗電0.01千瓦(kWh)。假設(shè)1千瓦時的成本為12美分。那么,在不需要時點(diǎn)亮的每10瓦燈泡將花費(fèi)每小時0.12美分。
我們會讓你的基本算術(shù)技能來計算整個辦公室的總成本,方法是用燈的數(shù)量乘以上面的數(shù)字。
那么我們?nèi)绾谓鉀Q這個問題呢?
雖然市場上有很多智能控制和自動化解決方案,但大多數(shù)解決方案需要定期設(shè)置額外的硬件,并導(dǎo)致額外的維護(hù)成本。
有沒有更好的方法來應(yīng)對這一挑戰(zhàn)?
所有辦公場所都設(shè)置了攝像頭來監(jiān)控該區(qū)域。我和同事們集思廣益,通過最少的投資來解決這個問題。
可以使用這些捕捉不同幀的相機(jī)來自動關(guān)閉燈光?
方案
解決方案是通過計算機(jī)的眼睛——通過計算機(jī)視覺——表達(dá)我們節(jié)約能源的意圖。
那么計算機(jī)視覺到底是什么呢?
“計算機(jī)視覺,通??s寫為CV,被定義為一個研究領(lǐng)域,旨在開發(fā)幫助計算機(jī)‘看到’和理解照片和視頻等數(shù)字圖像內(nèi)容的技術(shù)?!?/p>
該系統(tǒng)將觀察來自攝像機(jī)的輸入流,這基本上是攝像機(jī)的視野。每個捕獲的幀被劃分為4個區(qū)域。如果某個區(qū)域中沒有人,則屬于該區(qū)域的燈光將關(guān)閉。
這個解決方案是用opencv4 Nodejs實(shí)現(xiàn)的,用于流行的開源計算機(jī)視覺庫OpenCV。連同socket.io和express用于渲染一個web應(yīng)用程序,以顯示實(shí)時視頻流并模擬燈光的打開和關(guān)閉。
實(shí)施步驟
1.導(dǎo)入所需的庫。
constsocketIOProvider=require('socket.io'); constcv=require('opencv4nodejs');
2.開始從相機(jī)捕捉視頻源。
constfps=30;//framespersecond /** *videosourcesetto0forstreamfromwebcam *videosourcecanbeseturlfromipcamalsoeg:"http://192.168.1.112:8080/video" */ constvideoSource=0; constvideoCap=newcv.VideoCapture(videoSource); videoCap.set(cv.CAP_PROP_FRAME_WIDTH,600); videoCap.set(cv.CAP_PROP_FRAME_HEIGHT,600);
3.讀取并以常規(guī)幀速率將其流式傳輸?shù)?a href="http://wenjunhu.com/v/tag/1722/" target="_blank">網(wǎng)絡(luò)應(yīng)用程序。
setInterval(()=>{ constframe=videoCap.read(); constimage=cv.imencode('.jpg',frame).toString('base64'); io.emit('new-frame',{live:image}); },1000/fps);
4.以大于實(shí)時流的間隔讀取以確定用戶存在。
/** *Sincevideo/imagetransformationsarecomputionallyexpensiveoperations,theseoperationsareperformedindependentoflivefeedstreaming. */ setInterval(()=>{ constframe=videoCap.read(); constfaces=detectFaces(frame); constimageWithFaces=cv.imencode('.jpg',frame).toString('base64'); io.emit('new-frame',{transformed:imageWithFaces,transformationData:calculatePeoplePosition(frame,faces)}); },10000/fps);
5.使用任何OpenCV分類器檢測人。在這個解決方案中,使用了“HAAR正面人臉分類器”。
/** * *Facedetectiontransformationonthestream */ constdetectFaces=(frame)=>{ letfaces=[]; constimage=frame.bgrToGray(); constclassifier=newcv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2); constresults=classifier.detectMultiScale(image); if(results.objects.length){ results.objects.forEach((faceRect,i)=>{ if(results.numDetections[i]1)?{ ????????????????return; ????????????} ????????????drawFaces(frame,?faceRect); ????????????faces.push(faceRect); ????????}); ????} ????return?faces; };
6.在框架上標(biāo)記面部,以便可視化檢測。
/** *Drawingrectsaroundfacesonframe */ constdrawFaces=(frame,faceRect)=>{ constrect=cv.drawDetection(frame,faceRect,{ color:newcv.Vec(255,0,0), segmentFraction:4 }); };
7.確定人們相對于框架的位置,以確定他們所在的區(qū)域,從而只照亮那些部分。確定的結(jié)果隨后被發(fā)送到網(wǎng)絡(luò)應(yīng)用程序進(jìn)行照明模擬。更改燈泡顏色以模擬要照亮的區(qū)域。
結(jié)論
這是展示技術(shù)如何通過節(jié)約能源來改善地球的眾多例子之一。你還可以通過這個簡單的實(shí)現(xiàn)學(xué)習(xí)如何解決常見的工作場所挑戰(zhàn)。
上述解決方案的源代碼:https://github.com/Mudassir-23/opencv-nodejs-energy-saver
編輯:黃飛
-
計算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1698瀏覽量
46005 -
nodejs
+關(guān)注
關(guān)注
0文章
20瀏覽量
4235
原文標(biāo)題:利用計算機(jī)視覺和NodeJS實(shí)現(xiàn)燈光自動化
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論