跟各位分享一個之前用 LabVIEW 寫的小程式:居家防盜系統。
當初會寫這個程式主要是用來防範學校實驗室過年時被侵入,本程式透過讀取 webcam 影像,偵測畫面中是否有物體移動,若是有的話就會寄 email 到筆者的信箱,並附上照片。
由於相關的功能在網路上已經有非常多範例,所以在網路上大概搜尋一下就可以找到許多現成的工具,在 NI Developer Community 中,DOC-4717 這篇文章就說明如何實做將連續影像相減並偵測畫面中是否有物體在移動。這是動作偵測最簡單的方法之一,考慮到我的環境是在室內,而且過年期間本來就不會有人,所以也不需要再做人臉辨識之類的,因此這個範例程式就已經非常符合我的需求。若是環境是在室外,環境較為複雜,就沒有這麼容易了。
圖一 在 NI Developer Community 中,文章 DOC-4717 說明如何讀取webcam並相減連續影像以偵測動作。
另外一個實用的工具則是在文章 DOC-2041 中提到如何實做 Gmail 登入、附加檔案並傳送的程式。電子郵件是基於 Simple Mail Transfer Protocol (SMTP) 運作,而 LabVIEW 本身也有提供 SMTP 的指令,當初想說自己寫就好,後來才發現沒這麼簡單,LabVIEW 本身的指令並不直接支援需要帳號登入的 email 提供者,所以要在 LabVIEW 中呼叫 System.SmtpClient 這個 class 來用才行。好在也有人寫好了,所以我要做的就只有整理這些程式碼以符合我的需求而已。
圖二 DOC-2041 這篇文章則說明如何呼叫 System.SmtpClient 來實做 Gmail 應用。
結合這兩個程式,我設計了我自己的程式:LabSecurity,我使用的是羅技 C120 攝影機,當初購買時價錢為 500元。
圖三 我使用羅技C120攝影機 (圖片出自 http://www.logitech.com/zh-tw/product/6065?crid=34)。
程式執行的流程為:迴圈中持續相減前後兩張影像,將相減的結果乘上一個增益值(gain),並設一個閾值(threshold),當計算結果超過閾值時,警報就會響起,同時攝影機會連拍20張相片,並將其中的第 1、5、15、20張照片寄到我的 Gmail 信箱,如下圖所示:
圖四 偵測到入侵者後程式會將影像傳送到筆者的 Gmail。
以下則為實際的測試影片:
本文原文可至 http://robinhsieh.com/?p=345 閱讀。