OpenCV自学笔记7:人脸检测 之 静态图像中的人脸检测

人脸检测 之 静态图像中的人脸检测

OpenCV为我们提供了Harr分类器。我们使用预先训练好的人脸检测器haarcascade_frontalface_default.xml就可以运行人脸检测程序。haarcascade_frontalface_default.xml是一个xml格式的文件,在文件中包括人脸各个部位的Harr特征值,如图:

这里写图片描述

OpenCV已经为我们训练好了分类器,可以直接使用。

# -*- coding: utf-8 -*-

import cv2

def detect(filename):
    # face_cascade 为CascadeClassifier对象
    face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
    img = cv2.imread(filename)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转化为灰度图

    # 参数:
    # 待检测的灰度图
    # 每次搜索图像时,搜索窗口的压缩率。1.3表示搜索窗口扩大30%
    # 每个人脸矩形保留近邻数目的最小值
    faces = face_cascade.detectMultiScale(gray, 1.3, 5) # 返回人脸矩形数组

    for (x, y, w, h) in faces:
        img = cv2.rectangle(img, (x,y), (x+w, y+h), (0, 255, 0), 2) #绘制矩形
    cv2.imshow("face detect", img)
    cv2.waitKey(0)

filename = 'images/my_wife.jpg'
detect(filename)

程序运行的效果如下:

这里写图片描述

这里写图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值