Harr特征识别人脸
Haar cascade + opencv步骤
- 读取包含人脸的图片
- 使用haar模型识别人脸
- 将识别的结果用矩形框画出来
- 构造haar检测器 :cv2.CascadeClassifier('具体检测模型文件')
python
# 构造Haar检测器
# 级联分级机,cv2.CascadeClassifier():cv2的内置方法,创建一检测器
# haarcascade_frontalface_default.xml:正脸检测模型
face_detector = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')
- 将图像转成灰度图像
python
# 转成灰度图
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
- 检测: face_detector.detectMultiScale(img_gray)方法进行检测
python
# face_detector.detectMultiScale(img_gray)方法进行检测
# 检测结果,人脸的位置,二维数组
detections = face_detector.detectMultiScale(img_gray)
- 输出结果
python
# 打印结果
detections
# [ 284, 263, 113, 113]:[x,y,w,h],(x,y):左上角坐标,(w,h)检测到人脸的尺寸:从左上角向右和向下开始延申的宽度和高度
将识别的结果用矩形框画出来
- 绘制图像
python
# 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)
- 显示绘制结果
python
# 显示绘制结果
plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
DetectMultiScale()方法参数调试
参数:
scaleFactor:【距离】调整图片尺寸,值越大,相当于镜头拉大
minNeighbors:【质量】人脸候选数量:候选值越大,则检测的越少
minSize:去掉的最小人脸尺寸大小(w,h)
maxSize:去掉的最大人脸尺寸大小(w,h)