當(dāng)前位置:首頁 > 消費電子 > 視頻技術(shù)
[導(dǎo)讀]   就在前天,隔壁鄰居家的房子被租出去了。因為我是農(nóng)村的,房子都是獨立的帶院子的,沒錯就是這樣的:      因為家里經(jīng)常沒人住,并且還放有其他貴重物品,生怕一不留神,這些租戶跳

  就在前天,隔壁鄰居家的房子被租出去了。因為我是農(nóng)村的,房子都是獨立的帶院子的,沒錯就是這樣的:

  

  因為家里經(jīng)常沒人住,并且還放有其他貴重物品,生怕一不留神,這些租戶跳到我家。把這些東西洗劫一空。此時我已經(jīng)安耐不住內(nèi)心的小激動!那么。搭建一個智能監(jiān)控系統(tǒng)可好!

  2:新聞報道

  2017年7月13日訊,家庭攝像頭遭入侵,公民隱私被侵犯的案子,已經(jīng)破了。今天傍晚,市公安局發(fā)布消息稱,19天內(nèi),北京警方成功打掉了全國首例網(wǎng)上傳播家庭攝像頭破解軟件的犯罪鏈條,抓獲涉案人員24名。

  這些人的腦袋都秀逗了吧,這都能干出來,嚇得我趕緊自己搭建了一個智能監(jiān)控系統(tǒng)。

  3:方案設(shè)計詳解

  

  先大概敘述一下MS的功能,

  1:硬件部分

  兩個USB高清攝像頭,

  一個超聲波傳感器(HC-SR04),

  一個樹莓派3 modelB,

  散熱扇(很重要!)

  對于超聲波傳感器,主要的功能就是檢查距離的變化,也就是說當(dāng)檢測是有運動物體的產(chǎn)生,才會激活攝像頭。

  1:也是為了減輕樹莓派CPU負荷

  2:合理利用那可憐的32G內(nèi)存卡,

  對于兩個攝像頭,一個放置在家門口的過道里,每當(dāng)來人的時候,超聲波傳感器變化檢測到運動物體,這時會激活攝像頭便會捕捉一系列圖片,讓系統(tǒng)進行分析,包括面部,身體等信息,所以,這個攝像頭要求拍攝的質(zhì)量和角度要很好,另一個攝像頭這放置在院子的邊角,要求能照到整個院子,這個攝像頭主要任務(wù)就是檢測人體,并不強求識別出人臉,畢竟距離太遠。

  

  對于樹莓派,做個監(jiān)控系統(tǒng)的話,不能一直把電腦放在上面吧,那樣太浪費資源了,所以當(dāng)時狠心的買了個3B,不過還好用起來不錯,他的角色就是處理硬件傳回來的各種信息。。。

  2:代碼部分

  下面慢慢道來!

  0&TImes;02:環(huán)境搭建

  curl安裝: sudo apt-geTInstall curl

  MySQLdb安裝: sudo apt geTInstallpython-pip sudo apt-geTInstalllibmysqlclient-dev pipinstallmysql-python

  LAMP: sudo apt-getinstallapache2 sudo apt-getinstallphp7.0sudo apt-getinstalllibapache2-mod-php7.0sudo apt-getinstallmysql-serversudo apt-getinstallphpmyadmin sudo chmod777/var/www/html/ sudoln-s /usr/share/phpmyadmin /var/www/html/ sudo sed -i‘s/;extension=php_mbstring.dll/extension=php_mbstring.dll/’/etc/php/7.0/apache2/php.ini sudo /etc/init.d/apache2 restart mysql--user=root -pCREATEDATABASEIFNOTEXISTS`MS`DEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;USE`MS`;CREATETABLE`None`(`None`int(11)NOTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf8;

  OpenCV: sudo apt-getinstallbuild-essential sudo apt-getinstallcmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-getinstallpython-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev gitclonehttps://github.com/0x024/opencv.git cd ~/opencv mkdirreleasecdreleasecmake -DCMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local.。 make -j1 sudo makeinstall

  0×03: 目錄樹

  

  0×04:代碼分析

  1:MS.py(monitor system的簡稱)

  總體文件函數(shù)的分布!

  

  checkdist()

  

  首先來了解一下HC-SR04超聲波傳感器

  采用IO口TRIG觸發(fā)測距,給至少10us的高電平信號;

  模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;

  有信號返回,通過IO口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2

  引腳與樹莓派連接方式:

  VCC,超聲波模塊電源腳,接5V電源即可

  Trig,超聲波發(fā)送腳,高電平時發(fā)送出40KHZ出超聲波

  Echo,超聲波接收檢測腳,當(dāng)接收到返回的超聲波時,輸出高電平

  GND,超聲波模塊GND

  這里附上樹莓派串口的原理圖!方便自定義連接

  

  這里我將VCC連接至 Pin#02,將Gnd連接至Pin#06,將Trig連接至Pin#03,將Echo連接至Pin#05

  因為之前設(shè)置成了GPIO.setmode(GPIO.BCM),所以在寫的時候都要寫成Name那一列,Pin#只是指示作用!

  這里我自定義了一個index。默認的值就是傳感器在無運動物體下所穩(wěn)定的int值,這個需要根據(jù)傳感器擺放位置自行設(shè)定。

  初始化時將trig和echo端口都置低,首先向給 trig 發(fā)送至少10 us的高電平脈沖(模塊自動向外發(fā)送8個40K的方波),然后等待,捕捉 echo 端輸出上升沿,捕捉到上升沿的同時,打開定時器開始計時,再次等待捕捉echo的下降沿,當(dāng)捕捉到下降沿,讀出計時器的時間,這就是超聲波在空氣中運行的時間,按照 測試距離=(高電平時間*聲速(340M/S))/2 就可以算出超聲波到障礙物的距離。

  接著,當(dāng)distance發(fā)生明顯的變化時候,可以認定,有運動物體的產(chǎn)生。這時候,就會調(diào)用下一下函數(shù)camrun()

  camrun()

  可能會覺得上圖函數(shù)有點多余,其實不然,圖示的這種是適合于小區(qū)的只有一個門口的家庭,想想也對,

  當(dāng)使用兩個攝像頭的時候,就會用到如圖的函數(shù),這里用到了最簡單的多線程thread,(PS:本人能力有限,暫時還沒法理解threading這個自定義的多線程方法,),可以在運行cam()的時候,使得cam(0),和cam(1)的基本同時運行

  cam(i)

  

  這個函數(shù)的主要功能就是圖像的運動檢測,當(dāng)有運動物體時,便會將圖片以“%Y%m%d%H%M%S’+’_’+str(0)”的格式記錄下來,有時候可能存在兩個攝像頭同時工作記錄,導(dǎo)致記錄下來的圖片日期一樣,為了避免這個Error產(chǎn)生,在日期的后面加上了攝像頭“i”的標(biāo)識,用來進行分辨!

  這里采用時間來控制camera.release(),當(dāng)運行的時間==10s時候,便會退出cam(i),這個時間基本要和camrun()里的time.sleep()相同。

  這里也做了一個異常處理。避免了因為攝像頭沒有插好,或這因為前一個運行的cam()還沒有結(jié)束釋放導(dǎo)致的camera busy等而造成運行中斷!

  checkcycle()

  這個函數(shù)就是寫了一個無限循環(huán),可以讓getfilename()無限運行,對新增的圖像文件及時的進行檢測

  testfacepp()

  

  這個函數(shù)主要用來檢測訪問face++的服務(wù)器是否受到了 CONCURRENCY_LIMIT_EXCEEDED —并發(fā)限制,也就是說,因為我們是免費用戶,雖然可以使用他的全部API ,但是,當(dāng)他們的服務(wù)器達到高負荷時候,要首先供付費用戶的平穩(wěn)使用,當(dāng)負荷不大時候,我們才可以暢快的使用。還好吧!

  getfilename()

  

  這個函數(shù)就是檢測新圖片的產(chǎn)生,首先,打開piclist.log文件,當(dāng)沒有受到并發(fā)限制的時候,然后再去運用os,walk函數(shù)去遍歷”。/img/shutter/”目錄,這里要保證讀取時間的先后順序和寫入.log的先后順序同步,就不詳細說了。

  當(dāng)檢測到的為事先預(yù)定“9999999999999”文件時候,就是表明這是所有文件都以寫入piclist.log并已檢測完畢,

  當(dāng)所檢測的文件不在piclist.log的時候,便會調(diào)用checkbody(),來進行身體的檢測,

  checkbody()

  

  之所以先檢測身體,只有在有身體的情況下,才會有面部,可以減小服務(wù)器的負荷,

  首先,讀取照片,然后傳入BodyAPI,進行Body的檢測。當(dāng)不存在身體時候,將文件寫入piclist.log。進行下一個文件的檢測

  當(dāng)存在Body的時候,會將圖片中的每個Body都摳出來,然后分別放在”。/img/done/”里面,進行下一步的面部識別,。

  這里又對checkface_online()進行了一個并發(fā)限制的異常處理,因為實在沒法確定下一秒是否會并發(fā)限制,為了防止程序異常終端,所以在每次調(diào)用faceAPI的時候都要異常處理一下,目前BodyAPI并不會發(fā)生并發(fā)限制

  detailface()

  這個就是在運行faceAPI的時候。將返回來的face_token與數(shù)據(jù)路中的人臉進行比對,并返回該面部所對對應(yīng)的ID,namem,gender等信息

  checkface_online()

  

  面部識別這一塊有點長,不過也很簡單!

  首先讀取”。/img/done/”下的文件,然后將其傳給FaceAPI()進行面部分析,如果result_d[“faces”]==0,著表明只存在身體并未檢測到人臉,判定為stranger!寫入Piclist.log,進行下一張圖像的檢測,當(dāng)result_d[“faces”]》0 時,才可以將面部返回的face_tokrn與之前導(dǎo)入的face_token進行比對,同理,當(dāng)返回的len(result_s)==3及表明數(shù)據(jù)庫中并沒有該人臉,判定為 stranger!,寫入Piclist.log。當(dāng)len(result_s)》3時候,同時 confidence 》= 80.00才可以判定這個人是誰,否者都別判定為陌生人!

  if __name__ == ‘__main__’:

  

  這里就是要運行的方式

  python MS.py check

  這是就會開啟圖片檢測的功能。

  python MS.py camera

  這是就會開圖像截取的功能

  2:BodyAPI,F(xiàn)aceAPI,import.py

  PS:這些就詳細說了,因為之前發(fā)表過一篇文章,大家可以去參考

  0×05:運行

  代碼forkgithub.com/0x024/MS官方博客0x024.com

  運行前, 需要將。/facepp/FaceAPI.py和BodyAPI.py中的api_key和api_secret換成你的 (為了便于您測試,我以將我的key放在里面,為了防止多人使用沖突,希望您后期換成個人的) 需要將。/facepp/Dbconnect.py中的數(shù)據(jù)庫信息換成自己的 (在搭建環(huán)境過程中,建議密碼全部設(shè)置成ubuntu,方便記憶)

  pythonimport.py#將。/data/master/目錄下的圖片特導(dǎo)入數(shù)據(jù)庫

  pythonMS.py camera#運行圖像捕捉

  pythonMS.py check#運行圖像檢測

  0×06:其他

  1:對于想用電腦進行代碼測試的,我也將代碼整理好放MS-PC文件里面。大概運行方式和在樹莓派上的差不多,只是少了超聲波傳感器這一環(huán)節(jié)!可自行調(diào)試。

  2:對于環(huán)境搭建的問題,可以參考我先前的文章,實在不會的可在我的博客里面留言,我會及時的回復(fù),

  3:對于想二次開發(fā)的。比如加上web服務(wù)器可以遠程查看,加上通訊模塊及時進行數(shù)據(jù)反饋等等,最重要的就是有大腦風(fēng)暴!

  3:Good Luck

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉