一、識別圖像中的人臉
haarcascade_frontalface_alt_tree.xml
lbpcascade_frontalcatface.xml
GitHub上有Haar級聯檢測器源代碼可自行下載,lbp級聯檢測器也一樣有源碼可自行下載
也一樣
import cv2 as cv
import numpy as npdef face_detect(image):gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#轉成灰度圖face_detector = cv.CascadeClassifier(r"G:\Juptyer_workspace\study\opencv\opencv3\haarcascade_frontalface_alt_tree.xml")#級聯檢測器faces = face_detector.detectMultiScale(gray, 1.1, 2)#多個尺度空間進行查找人臉#第三個參數2 表示附近出現兩個檢測結果即可,兩個矩形框for x, y, w, h in faces:cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 2)#繪制矩形框cv.imshow("result", image)src = cv.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\pyy.jpg")
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
face_detect(src)
cv.waitKey(0)
cv.destroyAllWindows()
效果圖如下:
(我的男神)
二、識別視頻中的人臉
import cv2 as cv
import numpy as npdef face_detect(image):gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#轉成灰度圖face_detector = cv.CascadeClassifier(r"G:\Juptyer_workspace\study\opencv\opencv3\haarcascade_frontalface_alt_tree.xml")#級聯檢測器faces = face_detector.detectMultiScale(gray, 1.1, 2)#多個尺度空間進行查找人臉#第三個參數2 表示附近出現兩個檢測結果即可,兩個矩形框for x, y, w, h in faces:cv.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), 1)#繪制矩形框cv.imshow("result", image)capture = cv.VideoCapture(r"G:\Juptyer_workspace\study\opencv\opencv3\beyond.mp4")#參數為0。表示調用本地攝像頭
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while(True):ret, frame = capture.read()frame = cv.flip(frame, 1)face_detect(frame)c = cv.waitKey(10)if c == 27: # ESCbreakcv.waitKey(0)
cv.destroyAllWindows()
效果圖如下:
(我的信仰)