opencv-python識別人臉

轉自:https://www.cnblogs.com/neo-T/p/6430583.html

OpenCV已經幫我們做了,我們只需調用對應的API函數即可,先給出代碼:

 

 1 # -*- coding: utf-8 -*-
 2 
 3 ##關鍵字無法關閉 攝像頭,可能是代碼縮進問題。顯示圖像 在for 裏面是無法推出的
 4 import sys
 5 from PIL import Image
 6 import cv2
 7 
 8 def AICatchVideo(v_name, camera_index):
 9     # 打開攝像頭 ,視頻來源,也可以使用已存的視頻
10     cap = cv2.VideoCapture(0)
11     # 創建窗口
12     cv2.namedWindow(v_name)
13     # 加載人臉數據(人臉特徵),#告訴OpenCV使用人臉識別分類器
14     face_cascade = cv2.CascadeClassifier('./haarcascade_frontalface_alt2.xml')
15     while True:
16         ret, frame = cap.read()
17         if not ret:
18             # 等待用戶操作
19             cv2.waitKey(30)
20         # 得到每一幀-》圖像計算
21         # 灰度轉換:轉換成灰度的圖計算強度得以減低
22         gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
23         # 對比 攝像頭採集到的數據-》人臉特徵訓練集
24         faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5,minSize=(32,32))
25         if len(faces)>0:
26 
27             for (x, y, w, h) in faces:
28                 # 在窗口中識別人臉,畫一個矩形
29                 frame = cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
30         #顯示圖像
31         cv2.imshow(v_name, frame)
32         key = cv2.waitKey(20)
33         if key & 0xFF == ord('q'):
34             break
35 
36     # 窗口釋放:緩存-》內存條
37     cap.release()
38     cv2.destroyAllWindows()
39 
40 
41 if __name__ == '__main__':
42     # print(len(sys.argv))
43     # print('內容是'+ sys.argv[0])
44     # if len(sys.argv) != 2:
45     #     print('Usage:%s camera_id:{}'.format(sys.argv[0]))
46     # else:
47     AICatchVideo('識別人臉區域', sys.argv[0])

#告訴OpenCV使用人臉識別分類器
classfier = cv2.CascadeClassifier("./haarcascade_frontalface_alt2.xml")

這行代碼指定OpenCV選擇使用哪種分類器(注意,一定習慣分類這個說法,ML的監督學習研究的就是各種分類問題),OpenCV提供了多種分類器:

對同一個畫面有可能出現多張人臉,因此,我們需要用一個for循環將所有檢測到的人臉都讀取出來,然後逐個用矩形框框出來,這就是接下來的for語句的作用。Opencv會給出每張人臉在圖像中的起始座標(左上角,x、y)以及長、寬(h、w),我們據此就可以截取出人臉。其中,cv2.rectangle()完成畫框的工作,在這裏我有意識的外擴了10個像素以框出比人臉稍大一點的區域。cv2.rectangle()函數的最後兩個參數一個用於指定矩形邊框的顏色,一個用於指定矩形邊框線條的粗細程度。  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章