代碼:
import cv2# 導(dǎo)入級(jí)聯(lián)分類器引擎face_cascade = cv2.CascadeClassifier("opencv-master\data\haarcascades\haarcascade_frontalface_default.xml")eye_cascade = cv2.CascadeClassifier("opencv-master\data\haarcascades\haarcascade_eye.xml")smile_cascade = cv2.CascadeClassifier("opencv-master\data\haarcascades\haarcascade_smile.xml")# 調(diào)用攝像頭cap = cv2.VideoCapture(0)while (True): # 獲取攝像頭拍攝到的畫面 # cap.read()返回兩個(gè)參數(shù)。ret:值為true或false,表示獲取畫面成功或失敗, frame:獲取到的畫面是三維數(shù)組 ret, frame = cap.read() # 用人臉級(jí)聯(lián)分類器引擎進(jìn)行人臉識(shí)別,返回的faces為人臉坐標(biāo)列表,1.3是放大比例,2是重復(fù)次數(shù)(越大精確度越高) faces = face_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(32, 32)) img = frame for (x,y,w,h) in faces: # 畫出人臉框,藍(lán)色,畫筆寬度為2 # (x,y):左上角坐標(biāo) (x w,y h):右下角坐標(biāo) img = cv2.rectangle(img, (x,y), (x w,y h), (255,0,0), 2) # 框選出人臉區(qū)域,在人臉區(qū)域而不是全圖中進(jìn)行人眼檢測(cè),節(jié)省計(jì)算資源 face_area = img[y:y h, x:x w] # 用人眼級(jí)聯(lián)分類器引擎在人臉區(qū)域進(jìn)行人眼檢測(cè),返回的eyes為眼睛坐標(biāo)列表[ex,ey,ew,eh] eyes = eye_cascade.detectMultiScale(face_area, scaleFactor=1.3, minNeighbors=10) for (ex,ey,ew,eh) in eyes: # 畫出人眼眶,綠色,畫筆寬度為1 cv2.rectangle(face_area, (ex,ey), (ex ew,ey eh), (0,0,255),1) # 用微笑級(jí)聯(lián)分類器引擎在人臉區(qū)域進(jìn)行微笑檢測(cè) smiles = smile_cascade.detectMultiScale(face_area, scaleFactor = 1.16, minNeighbors= 65, minSize=(25,25), flags = cv2.CASCADE_SCALE_IMAGE) for (ex,ey,ew,eh) in smiles: # 畫出微笑框,紅色(BGR色彩體系),畫筆寬度為1 cv2.rectangle(face_area, (ex,ey), (ex ew,ey eh), (0,0,255), 1) cv2.putText(img, "smile", (x,y-7), 3, 1.2, (0,0,225), 2, cv2.LINE_AA) # 實(shí)時(shí)展示效果畫面 cv2.imshow("my_window", img) # 每5毫秒監(jiān)聽一次鍵盤動(dòng)作,按q鍵結(jié)束 if cv2.waitKey(5) & 0xFF == ord("q"): break# 關(guān)閉攝像頭cap.release()# 關(guān)閉所有窗口cv2.destroyAllWindows()
● 僅為人臉檢測(cè),非人臉識(shí)別,即只能框出人臉位置,看不出人臉是誰。
● 僅能標(biāo)出靜態(tài)圖片和視頻幀上的人臉、眼睛和微笑,不能進(jìn)行“活體識(shí)別”,即不能看出這張臉是真人還是手機(jī)上的照片,如果用于人臉打卡簽到,人臉支付的話會(huì)帶來潛在的安全風(fēng)險(xiǎn)
● 僅為普通的機(jī)器學(xué)習(xí)方法(基于haar特征的級(jí)聯(lián)分類器),沒有用到深度學(xué)習(xí)和深層神經(jīng)網(wǎng)絡(luò)。
聯(lián)系客服