隨著有寵物的家庭越來(lái)越多,為了方便寵物進(jìn)出,會(huì)設(shè)置一個(gè)小門(mén)供寵物進(jìn)出,為了安全,本方案使用樹(shù)莓派 5 和 OpenCV 來(lái)實(shí)現(xiàn)寵物門(mén)禁,只讓自家寵物進(jìn)出。
1. 硬件準(zhǔn)備,樹(shù)莓派5套件,包括樹(shù)莓派5主板、電源、存儲(chǔ)卡等。 攝像頭:連接到樹(shù)莓派,用于拍攝寵物圖像。3. 電子門(mén):選擇舵機(jī)來(lái)實(shí)現(xiàn)開(kāi)閉門(mén),可以通過(guò) GPIO 接口控制其開(kāi)關(guān)狀態(tài)。4. 杜邦線(xiàn)若干:用于連接樹(shù)莓派與舵機(jī)等設(shè)備。
樹(shù)莓派GPIO口
2、軟件安裝與環(huán)境配置在樹(shù)莓派 5 上安裝 Raspbian 操作系統(tǒng)。官網(wǎng)下載就可以。
然后安裝 OpenCV 庫(kù):通過(guò)終端命令行執(zhí)行以下步驟:
更新軟件包列表: sudo apt-get update
安裝 OpenCV 依賴(lài)項(xiàng):
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
獲取 OpenCV 源碼: git clone https://github.com/opencv/opencv.git
進(jìn)入 OpenCV 目錄并創(chuàng)建編譯目錄: cd opencv && mkdir build && cd build
配置編譯選項(xiàng): cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local..
編譯和安裝: make -j4 && sudo make install
3、寵物圖像數(shù)據(jù)采集與訓(xùn)練模型,采集寵物的圖像數(shù)據(jù):使用攝像頭拍攝寵物的照片,建立寵物圖像數(shù)據(jù)集。
數(shù)據(jù)預(yù)處理:對(duì)采集到的圖像進(jìn)行裁剪、縮放、歸一化等處理,以適應(yīng)模型訓(xùn)練要求。
門(mén)禁控制程序開(kāi)發(fā)1. 使用 Python 語(yǔ)言結(jié)合 OpenCV 和樹(shù)莓派的 GPIO 控制庫(kù)開(kāi)發(fā)門(mén)禁控制程序。
程序流程:初始化攝像頭和電子門(mén)鎖的 GPIO 引腳。循環(huán)讀取攝像頭圖像:使用 OpenCV 捕獲攝像頭的實(shí)時(shí)圖像幀。對(duì)圖像幀進(jìn)行預(yù)處理,如調(diào)整大小、灰度化等操作, 將圖像輸入到訓(xùn)練好的寵物識(shí)別模型中進(jìn)行預(yù)測(cè)。根據(jù)預(yù)測(cè)結(jié)果判斷是否為自家寵物:如果識(shí)別為自家寵物,控制電子門(mén)鎖打開(kāi)一定時(shí)間(如 5 - 10 秒),同時(shí)可以記錄寵物進(jìn)出的時(shí)間信息到日志文件中。 如果不是自家寵物,則保持門(mén)鎖關(guān)閉狀態(tài)。
開(kāi)發(fā)工具使用的是 Python3 作為開(kāi)發(fā)語(yǔ)言,OpenCV 作為圖像處理庫(kù),使用樹(shù)莓派自帶的 Thonny編輯器。
軟件部分采用Python語(yǔ)言開(kāi)發(fā),代碼參考了OpenCV例程。Python編輯器采用Thonny。它簡(jiǎn)單易用,可以在樹(shù)莓派上輕松使用。它的用戶(hù)界面直觀(guān),具有代碼自動(dòng)縮進(jìn)、語(yǔ)法高亮等功能。
在工程目錄下創(chuàng)建dataset文件夾儲(chǔ)存寵物圖像樣本,和trainer文件夾儲(chǔ)存訓(xùn)練數(shù)據(jù)。并將OpenCV提供的haarcascade 分類(lèi)器(haarcascade_frontalface_default.xml)拷貝到工程目錄下。目錄結(jié)構(gòu)和文件見(jiàn)下圖。
dataset:放寵物圖片的文件,里面有諸如ABC文件夾,每個(gè)文件夾里是諸如ABC的數(shù)據(jù)圖片。
faces:數(shù)據(jù)文件,存放id和name.
face_dataset_01.py: 寵物狗圖像數(shù)據(jù)采集
face_training_02.py:訓(xùn)練已有數(shù)據(jù)并生成模型
face_recognition_03.py:寵物狗識(shí)別比對(duì)和開(kāi)門(mén)工作
首先是寵物圖像數(shù)據(jù)的采集,在Thonny編輯器中運(yùn)行程序1。錄入過(guò)程是用USB攝像頭對(duì)準(zhǔn)屏幕采集預(yù)先下載好的寵物圖像,能夠?qū)⒁曨l圖像顯示到界面中,并對(duì)寵物狗圖像進(jìn)行檢測(cè),將圖像中所有的寵物狗檢測(cè)出來(lái),并用矩形框框出。
采集30張灰度圖做圖像特征識(shí)別。程序會(huì)收集30個(gè)樣本數(shù)據(jù),存儲(chǔ)樣本數(shù)據(jù)在dataset中,可在用戶(hù)界面直接打查看。
運(yùn)行程序2進(jìn)行訓(xùn)練寵物特征數(shù)據(jù),會(huì)讀取捕獲的寵物圖像進(jìn)行識(shí)別訓(xùn)練,并將訓(xùn)練數(shù)據(jù)保存在程序目錄下的文件中。
運(yùn)行程序3進(jìn)行寵物識(shí)別比對(duì)和開(kāi)鎖工作,用攝像頭對(duì)準(zhǔn)事先下載的圖片,依次進(jìn)行識(shí)別。
如寵物圖像比對(duì)正確,顯示OPEN DOOR,并驅(qū)動(dòng)舵機(jī)打開(kāi)小門(mén),放寵物進(jìn)出。
4、系統(tǒng)測(cè)試與優(yōu)化 ,對(duì)整個(gè)寵物門(mén)禁系統(tǒng)進(jìn)行全面測(cè)試,檢查識(shí)別準(zhǔn)確率、門(mén)禁控制的可靠性、系統(tǒng)響應(yīng)速度等方面。根據(jù)測(cè)試結(jié)果進(jìn)行優(yōu)化: 如果識(shí)別準(zhǔn)確率不夠高,可以增加訓(xùn)練數(shù)據(jù)量、調(diào)整模型結(jié)構(gòu)或超參數(shù)進(jìn)一步訓(xùn)練模型。如果門(mén)禁控制有延遲或不穩(wěn)定,檢查 GPIO 連接和控制代碼邏輯,進(jìn)行相應(yīng)的優(yōu)化。
通過(guò)以上方案,可以實(shí)現(xiàn)基于樹(shù)莓派5和 OpenCV 的寵物門(mén)禁系統(tǒng),讓寵物能夠自由進(jìn)出特定區(qū)域,同時(shí)防止其他物體或動(dòng)物誤觸發(fā)門(mén)禁。