樹莓派開發系列(八) 人臉識別初探

隨著人工智慧技術的飛速發展,在我們生活中越來越多地融入了這項技術所帶來的成果,其中最為耳熟能詳的就是人臉識別技術了。包括各種App的實名認證,企業的門禁系統,小區的攝像頭,無時不刻地在捕捉我們的臉龐。這項技術到底有多神秘呢,是不是我們自己就可以動動雙手來嘗試一下呢,答案是肯定的,而且就靠我們的樹莓派就可以做到,高科技其實離我們咫尺之遙,並不神秘。

樹莓派開發系列(八) 人臉識別初探

人臉識別技術

下面就來說說我們的小派如何來做到人臉識別,首先有些前提條件要準備好,第一步要準備好樹莓派專用的攝像頭,這是小派的眼睛,必須得有。第二步就是要安裝一個叫OpenCV的軟體,它是大腦,是人臉識別的核心軟體。關於以上兩步的詳細介紹,在我的前文

《樹莓派開發系列(四) 小派,看看這個世界吧》

中有詳細的說明,有興趣的朋友可以關注我並翻閱下前文,本篇就不再贅述了。

樹莓派開發系列(八) 人臉識別初探

樹莓派及攝像頭

接下來我們就拿起我們的python武器,編寫一段程式碼來實現人臉識別。程式碼如下:

‘’‘Haar Cascade Face detection with OpenCV Based on tutorial by pythonprogramming。net Visit original post: https://pythonprogramming。net/haar-cascade-face-eye-detection-python-opencv-tutorial/Adapted by Marcelo Rovai - MJRoBot。org @ 7Feb2018’‘’import numpy as npimport cv2# 匯入opencv內部已經訓練好的人臉模型faceCascade = cv2。CascadeClassifier(‘haarcascade_frontalface_default。xml’)# 開啟攝像頭,並設定視窗大小cap = cv2。VideoCapture(0)cap。set(3, 640) # set Widthcap。set(4, 480) # set Height# 進行人臉識別while True: ret, img = cap。read() # 讀取攝像頭採集到的圖片 # img = cv2。flip(img, -1) #將攝像頭180旋轉,攝像頭倒放的時候需要 gray = cv2。cvtColor(img, cv2。COLOR_BGR2GRAY) # 將讀取的圖片轉換為灰度圖 faces = faceCascade。detectMultiScale( gray, scaleFactor=1。2, minNeighbors=5 , minSize=(20, 20) ) # 採用Haar+Cascade分類器進行臉部識別 for (x, y, w, h) in faces: # 將識別到的人臉用藍色框框出來,x:橫座標;y縱座標;w:寬度;h:高度(即(x,y):表示畫藍色框的起點;w,h表示藍色框的長和寬) cv2。rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = gray[y:y + h, x:x + w] roi_color = img[y:y + h, x:x + w] cv2。imshow(‘video’, img) # 顯示到螢幕上 k = cv2。waitKey(30) & 0xff if k == 27: # 按‘ESC’退出攝像頭 breakcap。release() # 釋放攝像頭cv2。destroyAllWindows() # 關閉視窗

在這段程式碼中,有個關鍵點就是haarcascade_frontalface_default。xml這個檔案,這個檔案是OpenCV已經訓練好的人臉模型的引數,有了這個模型引數,OpenCV就可以從影象中去區分出人臉。檔案可以從這個連結中下載:https://github。com/opencv/opencv/tree/master/data/haarcascades。

好了,執行一下試試效果吧,還不錯,速度還挺快的!是不是很簡單呢:),其實目前的話,我們只是做到了識別出通用的人臉,更進一步,我們應該能識別出特定的人臉,這個就要自來來訓練人臉模型了,有興趣的朋友可以查閱些資料來嘗試下。也希望大家互相來交流,挖掘出更多樹莓派的有趣應用。

樹莓派開發系列(八) 人臉識別初探

樹莓派人臉識別