Python動態人臉識別


這里介紹使用攝像頭捕獲實時人臉信息

'''
從攝像頭捕獲實時畫面進行人臉檢測
'''
import cv2
# 准備面部檢測引擎和人眼檢測引擎
# 注意調用方法沒有任何區別
# 只是選擇的xml文件不一樣
# 面部檢測是haarcascade_frontalface_default.xml
# 人眼檢測是haarcascade_eye.xml
face_engine = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
# 調用VideoCapture函數
# 參數設為0表示打開本地默認攝像頭
# 參數若為文件路徑也可以打開一個本地的視頻文件
# 返回一個VideoCapture對象
cap = cv2.VideoCapture(0)
# 應該是設置屏幕亮度的參數
# 默認以下設置
cap.set(10,10)
# 由於人臉檢測是在靜態的圖片上進行
# 所以需要對攝像頭捕獲的內容進行逐幀檢測
# 定義下面的循環體
while True:
    # 調用read函數讀取每一幀的圖片
    # 返回兩個值
    # success表示若圖片讀取成功返回True
    # frame表示返回的Image對象
    success, frame = cap.read()
    # 使用面部識別引擎檢測人臉
    # 返回一個包含面部區域信息的可迭代對象
    faces = face_engine.detectMultiScale(frame, 1.3, 3)
    # 對每個面部區域畫出矩形
    for (x,y,w,h) in faces:
        # 在圖片frame上繪制矩形
        img1 = cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
        # 截取人臉區域
        # 因為人眼在人臉上
        # 所以人眼檢測一定在面部區域進行
        # 可以提高檢測的效率
        face_area = img1[y:y+h,x:x+w]
        # 人眼檢測
        eyes = eye_cascade.detectMultiScale(face_area,1.3,3)
        # 繪制人眼矩形區域
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
    # 繪制好矩形區域后,創建圖片顯示窗口
    cv2.imshow('Face_recognition', frame)
    # 條件限制
    # 表示鍵盤每隔5毫秒監聽一次
    # 0xFF == ord('q')表示按下鍵盤上的Q鍵觸發動作break退出循環
    # 注意這里的Q鍵必須要在英文輸入法條件下進行
    if cv2.waitKey(5) & 0xFF == ord('q'):
            break
# 調用release函數關閉攝像頭
# 這個要特別注意!
cap.release()
# 顧名思義,清理窗口、退出窗口
cv2.destroyAllWindows()

最后會這樣顯示

比如奧觀海,一般計算機視覺行內人都是必備奧觀海的圖片的,就像之前說過的Lena圖一樣。

這是實時拍攝的嗷!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM