import cv2 import matplotlib.pyplot as plt %matplotlib inline # 提取预训练的人脸检测模型,提前下载好的模型 face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_alt.xml') # 加载彩色(通道顺序为BGR)图像 img = cv2.imread('images/9f510fb30f2442a70a9add3dd143ad4bd0130295.jpg') # 将BGR图像进行灰度处理 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 在图像中找出脸 faces = face_cascade.detectMultiScale(gray) # 打印图像中检测到的脸的个数 print('Number of faces detected:', len(faces)) print(type(faces)) # 获取每一个所检测到的脸的识别框 for (x,y,w,h) in faces: # 在人脸图像中绘制出识别框 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) # 将BGR图像转变为RGB图像以打印 cv_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 展示含有识别框的图像 plt.imshow(cv_rgb) plt.show()
OpenCV 中的 Haar feature-based cascade classifiers 来检测图像中的人脸。OpenCV 提供了很多预训练的人 脸检测模型,它们以XML文件保存在 github