计算机视觉基础系列(python与opencv的操作与运用/tensorflow的基础介绍)(二十一)---Haar+adaboost分类器实现人脸识别

Haar+adaboost分类器实现人脸识别:

其中运用了很多opencv自带的包,然后这里的代码里面都有很详细的注释,可以看一下,最后的效果不是很好,之后会慢慢改进,也运用了opencv里面自带的两个xml文件,一个是检测人脸的xml文件,另外一个是检测眼睛的xml文件,都可以在opencv官网下载的opencv开源包中找到,这里,我上传到csdn上,附上链接可以下载:点击此处跳转,可以下载一下。

整个操作流程是:1.load xml文件 2.夹在图片 3.haar特征,灰度处理(所有的haar特征基于灰度图的)4.检测人脸 5.绘制标注

每一步的操作详细注释可以看一下

import cv2
import numpy as np
# 1.load xml文件   2.夹在图片  3.haar特征,灰度处理(所有的haar特征基于灰度图的),4.检测人脸  5.绘制标注
# 加载引入xml文件
face_xml = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_xml = cv2.CascadeClassifier('haarcascade_eye.xml')
img = cv2.imread('face.png')
cv2.imshow('src', img)
# 计算haar特征,但是opencv自带的已经解决,所以只需要转换成灰度图即可
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测;cv2中有自带的检测方法
faces = face_xml.detectMultiScale(gray, 1.3, 5)
# 检测图像中的人脸,第一个参数,灰度图片的数据,缩放系数,harr特征需要的比例缩放的操作;目标大小,人脸不能小于5
print('face=', len(faces))
# 绘制人脸,给人脸画宽高
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    roi_face = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]
    # 也必须是灰度图
    eyes = eye_xml.detectMultiScale(roi_face)
    print('eye=', len(eyes))
    for (x2, y2, w2, h2) in eyes:
        cv2.rectangle(img, (x2, y2), (x2+w2, y2+h2), (0, 255, 0), 2)
cv2.imshow('dst', img)
cv2.waitKey(0)

输出的结果为:

效果有一些偏差,后面可以慢慢优化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值