Harr特征识别人脸
构造haar检测器 :cv2.CascadeClassifier('具体检测模型文件')
- # 构造Haar检测器
- # 级联分级机,cv2.CascadeClassifier():cv2的内置方法,创建一检测器
- # haarcascade_frontalface_default.xml:正脸检测模型
- face_detector = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')
- # 转成灰度图
- img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
- # face_detector.detectMultiScale(img_gray)方法进行检测
- # 检测结果,人脸的位置,二维数组
- detections = face_detector.detectMultiScale(img_gray)
- # 打印结果
- detections
- # [ 284, 263, 113, 113]:[x,y,w,h],(x,y):左上角坐标,(w,h)检测到人脸的尺寸:从左上角向右和向下开始延申的宽度和高度
将识别的结果用矩形框画出来
- # for循环迭代检测的元组,并画上矩形
- for (x,y,w,h) in detections:
- # print((x,y,w,h))
- # 画矩形 img:BGR
- cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,255,0),thickness=10)
- # 显示绘制结果
- plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
参数:
scaleFactor:【距离】调整图片尺寸,值越大,相当于镜头拉大
minNeighbors:【质量】人脸候选数量:候选值越大,则检测的越少
minSize:去掉的最小人脸尺寸大小(w,h)
maxSize:去掉的最大人脸尺寸大小(w,h)