整个Adaboost 迭代算法就3步:
由弱分类器“并联”组成强分类器,而由强分类器“串联”组成级联分类器。
import cv2
import numpy as np
#静态图像中的人脸检测
def StaticDetect(filename):
#创建一个级联分类器 加载一个 .xml 分类器文件. 它既可以是Haar特征也可以是LBP特征的分类器.
face_cascade = cv2.CascadeClassifier('F:/03-opencv_install/sources/data/haarcascades/haarcascade_frontalface_default.xml')
#加载图像
img = cv2.imread(filename)
#转换为灰度图
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#进行人脸检测,传入scaleFactor,minNegihbors,分别表示人脸检测过程中每次迭代时图像的压缩率以及
#每个人脸矩形保留近似数目的最小值
#返回人脸矩形数组
faces = face_cascade.detectMultiScale(gray_img,1.3,5)
for (x,y,w,h) in faces:
#在原图像上绘制矩形
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
cv2.namedWindow('Face Detected!')
cv2.imshow('Face Detected!',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__=='__main__':
filename = 'D:/python_opencv/people.jpg'
StaticDetect(filename)
注意:需要修改的是face_cascade = cv2.CascadeClassifier('F:/03-opencv_install/sources/data/haarcascades/haarcascade_frontalface_default.xml')
,这个目录可通过everything搜索haarcascade_frontalface_default.xml的位置,然后筛选data目录下的即可。