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