前言
今天開始做攝像頭動態人臉檢測。注:不是人臉識別。
在上一篇靜態照片人臉檢測博客的基礎上稍作修改就可以了。大部分代碼還是相同的只不過,將照片改爲每一幀照片而已。
代碼實現
import cv2
face_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml') # 加載級聯文件
eye_engine = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml') # 加載級聯文件
cap = cv2.VideoCapture(0) # 打開筆記本攝像頭
while(True):
check,frame = cap.read() # 讀入每幀圖片
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) # 灰度化處理
face = face_engine.detectMultiScale(gray,scaleFactor=1.25,minNeighbors=6) # 參數根據實際效果自行調整
for (x,y,w,h)in face:
img = cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2) # 臉部框圖繪製
face_area = img[y:y+h,x:x+w] # 將眼部檢測區域範圍縮小,減少檢測時間
eye = eye_engine.detectMultiScale(face_area,1.25,10)
for (ex,ey,ew,eh) in eye:
cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) # 眼部框圖繪製
cv2.imshow("frame", frame)
if cv2.waitKey(1) == ord('q'): # 鍵盤鍵入q退出
break
cap.release()
cv2.destroyAllWindows()
在這裏就不做效果展示了,只要環境搭建好,這幾行代碼基本就可以實現攝像頭的人臉檢測和人眼檢測。相對比較簡單。