是不是厭煩了每次回家都要點擊按鈕打開電腦的操作?
你如果有看過我以前的推送,是不是厭煩了每次回家都要喊 “echo,turn on my pc”,讓智能音箱打開電腦的操作?
現在,我們有一個全新的操作,坐到椅子上就能讓電腦開機!
(避免你跟我一樣,擁有一口蹩腳的英語,讓 echo 聽不懂的尷尬)
這里還要注意:光理論是不夠的,這里順便總大家一套2020最新python入門到高級專案實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!
本教程所需要的工具及應用:
1. 一個樹莓派 3
2. 一個可在樹莓派 3 上運行的攝像頭(我用的是羅技 C270,樹莓派官方攝像頭也可以)
3.Python3
4. 路由器一臺,及支持 WakeOnLan 的主機(大部分都支持)
如果你只是想在 windows/macos 上嘗試一下人臉識別而不需要進行自動開機,則需要:
1.Python3
2. 一個可運行的攝像頭
自動開機效果演示:
1. 安裝必要的 python 組件
windows/macOS:
pip install opencv-python
非常簡單,和樹莓派的安裝復雜度不是一個級別的,
樹莓派:
在樹莓派上的安裝程序比較復雜,需要耐心折騰,分為以下步驟:
1.1 安裝 Cmake 等編譯 openCV 原始碼的工具
sudo apt-get install build-essential cmake pkg-config
1.2 安裝幾種常見格式的影像操作的包
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
1.3 安裝視頻操作的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
1.4 openCV 用于影像 /GUI 展示的功能依賴 highgui 模塊,為了編譯它我們需要安裝 libgtk2.0-dev
sudo apt-get install libgtk2.0-dev
1.5 額外依賴
sudo apt-get install libatlas-base-dev gfortran
1.6 當然,還要安裝構建 Python 擴展所需要的頭檔案
sudo apt-get install python2.7-dev python3-dev
1.7 下載并編譯 opencv 和 opencv_contrib 的原始碼
下載并解壓:
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip
unzip opencv.zip
wget -O opencv\_contrib.zip https://github.com/Itseez/opencv\_contrib/archive/4.1.0.zip
unzip opencv\_contrib.zip
編譯:
cd ~/opencv-4.1.0/
mkdir build & cd build
cmake -D ENABLE\_PRECOMPILED\_HEADERS=OFF \\ -D CMAKE\_BUILD\_TYPE=RELEASE \\ -D CMAKE\_INSTALL\_PREFIX=/usr/local \\ -D INSTALL\_PYTHON\_EXAMPLES=ON \\ -D OPENCV\_EXTRA\_MODULES\_PATH=~/opencv\_contrib-4.1.0/modules \\ -D BUILD\_EXAMPLES=ON ..
make -j4
make install
make ldconfig
PS:請注意你自己放置的目錄和版本的區別,make -j4 是四執行緒進行編譯,程序大約需要 2-3 個小時,如果說 j4 編譯失敗,請去掉 - j4 這個引數,直接 make (單執行緒,這樣大約需要 6-9 個小時).
2. 測驗你的攝像頭
撰寫如下的 Python 檔案,test.py:
運行本程式:
python test.py
如果成功,你將會看到你的攝像頭燈亮起(如果有燈的話),螢屏出現兩個視窗,一個是彩色的,一個是灰色的,
你還可以在讀取到 frame 后對 frame 進行操作,如
frame = cv2.flip (frame, -1) # 垂直反轉攝像頭圖形
對攝像頭進行垂直翻轉,
2. 人臉識別
人臉識別模塊我們將使用 Haar 級聯分類器,我們自己搜集人臉圖片然后進行訓練是比較麻煩的,好在 openCV 已經提供了相關的人臉識別 XML 檔案,使用這些檔案我們就能直接進行人臉或笑臉的識別,下載地址:
github.com/opencv/opencv/tree/mast...
我們代碼需要用到里面的 haarcascade_frontalface_default.xml ,當然,如果你想嘗試別的識別也可以進行下載,
撰寫如下的 Python 檔案,test2.py:
運行本程式:
python test2.py
如果成功,當有人臉出現在攝像頭范圍內,則會被用藍色框框畫起來,如圖所示:
3. 獲取你的人臉資料作為訓練集
好了,我們剛剛成功識別了人臉,現在我們需要識別出某個人臉是某個人,比如當我出現在鏡頭中,它要識別出這個人就是 “幻象客”,
新建檔案夾 train_data,用于保存拍攝下來的人臉,一共拍攝五十張人臉圖片,get_train_data.py:
4. 訓練剛剛得到的資料
拍攝完我們的影像后,我們還需要對這些圖片進行訓練,train.py:
訓練完成后,當前檔案夾會出現 trainer.yml 檔案,這就是我們所需要的模型檔案,
5. 物體物件并通知設備自動開機
現在我們就可以使用剛剛訓練出來的模型檔案,對人臉進行檢測,以識別出該人臉的物體物件,
recognize.py 代碼如下:
如果你只是在 windows 或者 macOS 上運行,直接把 wake_on_lan 函式呼叫去掉即可,
其中,在標記人臉部分,由于我們的訓練集數量少,我把識別到的人臉然后開機的閾值調到了 40,避免無法自動開機的尷尬之處,當識別到的人臉的信度大于 40,這個人臉對應的名字是我的時候,才會進行開機操作,
這么低的信度也不需要擔心識別到別人的臉也開機,經過測驗,陌生人的臉大約只有 10~20 的信度,當然,如果你還是擔心,可以把訓練集增加,然后調高該判斷的信度閾值,
wake_on_lan () 函式中的引數,是你需要自動開機的電腦的 mac 地址,wake on lan 簡稱 WOL,它能讓你使用路由器通過 LAN 埠對某個設備進行開機的操作,本推送中的自動開機使用到的功能就是這個,你需要在路由器的管理頁面中,看到本機的 mac 地址,并送入這個函式中,
在樹莓派上運行這個 Python 檔案,將臉湊到攝像機前,就會將 mac 地址對應的設備開機(當然,這個設備要連著路由器才行),
最后注意:光理論是不夠的,這里順便總大家一套2020最新python入門到高級專案實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/147269.html
標籤:Python
