利用OpenCV Haar分类器检测人脸(python实现)

这篇具有很好参考价值的文章主要介绍了利用OpenCV Haar分类器检测人脸(python实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

人脸识别分类器,人脸检测,OpenCV,opencv,python,计算机视觉,目标检测,人工智能,pycharm

前言

人脸检测(Face Detection)是当前目标检测领域中一项非常热门的研究领域,它是人脸识别与人脸表情分析的核心,本篇文章介绍采用OpenCV中Haar分类器算法对图片中人脸的检测,并通过矩形框讲人脸与眼睛位置框选与标记.

1. Haar级联分类器

Haar级联分类器是一种基于特征提取和机器学习的对象检测方法。它使用Haar特征进行图像分析,通过训练样本数据集,生成一个多层级联的分类器来检测目标物体。最常用于人脸检测。它是由Paul Viola和Michael Jones于2001年提出的。

Haar级联分类器的基本思想是通过组合多个简单的特征来构建一个强大的分类器。这些特征是基于Haar-like特征的概念,它们可以有效地描述图像的局部区域。Haar-like特征是一种基于图像亮度差异的局部特征,可以用于区分人脸和非人脸区域。例如,一个典型的Haar-like特征可以是在图像上的一个矩形区域,该区域的左上部分具有较暗的像素值,而右下部分具有较亮的像素值。

通过使用Haar-like特征,Haar级联分类器可以对图像的不同区域进行特征计算,并将其输入到级联的分类器中进行分类。级联分类器由多个弱分类器组成,每个弱分类器都负责检测特定的特征。级联分类器通过级联地应用这些弱分类器来逐步筛选出可能的人脸区域,最终得到准确的人脸检测结果。

在实际应用中,OpenCV提供了预训练的Haar级联分类器模型,可以用于人脸检测。这些模型通常以XML文件的形式存在,并包含了在大量正负样本上训练得到的分类器参数。可以使用这些预训练的模型来进行人脸检测,而无需自己训练分类器。

要使用Haar级联分类器进行人脸检测,需要加载相应的分类器文件,如haarcascade_frontalface_default.xml,然后将图像转换为灰度图像,并使用detectMultiScale()函数进行人脸检测。

总结来说,Haar级联分类器是一种基于Haar-like特征的人脸检测方法,通过级联的弱分类器来逐步筛选人脸区域。在OpenCV中,可以使用预训练的Haar级联分类器模型进行人脸检测。

Haar级联分类器具有以下优点:

  1. 高效性:通过使用Haar特征和级联结构,在处理大量数据时能够快速地减少计算量。
  2. 准确性:根据训练数据集得到的多层级联分类器具有高度准确性。
  3. 可扩展性:可以通过添加更多的训练数据和调整参数来改进模型性能。

2. 功能实现

2.1 完整代码

# encoding:utf-8
import cv2
import numpy as np



# 通过numpy读取中文路径图像
def image_read_from_chinese_path(image_file_name):
    image_numpy_data = cv2.imdecode(np.fromfile(image_file_name, dtype=np.uint8), -1)
    #返回numpy的ndarray
    return image_numpy_data


# 运行之前,检查cascade文件路径是否在相应的目录下
face_cascade = cv2.CascadeClassifier('model/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('model/haarcascade_eye.xml')

# 读取图像
img = image_read_from_chinese_path('./images/test2.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转为灰度图


# 检测脸部
faces = face_cascade.detectMultiScale(gray,
                            scaleFactor=1.1,
                            minNeighbors=5,
                            minSize=(100, 100),
                            flags=cv2.CASCADE_SCALE_IMAGE)


# 标记位置
for (x, y, w, h) in faces:
    img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)

    roi_gray = gray[y: y + h, x: x + w]
    roi_color = img[y: y + h, x: x + w]

    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex, ey, ew, eh) in eyes:
        cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 0, 255), 2)


label = f'OpenCV  Haar Detected {str(len(faces))} faces'
cv2.putText(img, label, (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 1)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

如果新同学不知道如何配置环境,可以参考博主写的【Anaconda3与PyCharm安装配置保姆教程】

其中,函数image_read_from_chinese_path函数主要是解决cv2无法读取中文路径图像的解决方案,具体可以参考博主写的文章【opencv-python[cv2]读取中文路径图像】

2.2 单个人脸测试效果

人脸识别分类器,人脸检测,OpenCV,opencv,python,计算机视觉,目标检测,人工智能,pycharm

2.3 多个人脸测试效果

人脸识别分类器,人脸检测,OpenCV,opencv,python,计算机视觉,目标检测,人工智能,pycharm

2.4 Haar级联分类器缺点分析

尽管Haar级联分类器在人脸检测任务上取得了良好的效果,但它也存在一些缺点。以下是一些常见的缺点:

  1. 计算复杂度高:Haar级联分类器的计算复杂度相对较高,特别是在较大的图像上进行检测时。由于需要在不同尺度和位置上对图像进行滑动窗口检测,以及应用多个级联分类器进行分类,因此会消耗大量的计算资源。

  2. 对光照和姿态变化敏感:Haar级联分类器对光照和姿态变化比较敏感。由于Haar-like特征是基于亮度差异的,当图像中的光照条件变化较大时,可能会导致人脸检测的性能下降。此外,当人脸出现较大的姿态变化时,级联分类器可能无法准确地检测到人脸。

  3. 鲁棒性差:Haar级联分类器对遮挡和复杂背景也比较敏感。当人脸被遮挡部分或存在复杂的背景干扰时,级联分类器可能会产生误检或漏检。

  4. 检测精度有限:尽管Haar级联分类器在一般情况下可以提供较好的人脸检测结果,但在某些具有挑战性的场景下,如低分辨率图像、侧脸或非正面人脸等情况下,其检测精度可能有限。

  5. 需要大量训练数据和时间:训练一个高质量的Haar级联分类器需要大量的正负样本数据,并且训练过程相对较慢。此外,需要仔细调整和优化级联分类器的参数,以获得良好的检测性能。

尽管存在这些缺点,Haar级联分类器仍然是一种广泛应用的人脸检测方法,特别是在资源受限的嵌入式设备或实时应用中。然而,随着深度学习方法的发展,基于卷积神经网络的人脸检测算法已经取得了更好的性能,并成为当前主流的人脸检测技术。

结束语

由于博主能力有限,本篇文章中提及的方法,也难免会有疏漏之处,希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。文章来源地址https://www.toymoban.com/news/detail-752485.html

到了这里,关于利用OpenCV Haar分类器检测人脸(python实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV实现人脸检测(Haar特征)

    OpenCV是一个广泛应用于计算机视觉领域的开源库,提供了丰富的图像处理和分析功能。其中,人脸检测是OpenCV中最常见和重要的应用之一。在OpenCV中,可以使用Haar特征分类器实现人脸检测。 Haar特征是一种常用的特征描述方法,它通过在图像上移动不同大小和形状的滑动窗口

    2024年04月16日
    浏览(41)
  • 【opencv】传统目标检测:Haar检测器实现人脸检测

    传统目标分类器主要包括Viola Jones Detector、HOG Detector、DPM Detector,本文主要介绍VJ检测器,在VJ检测器基础上发展出了Haar检测器,Haar检测器也是更为全面、使用更为广泛的检测器。 Viola Jones Detector是作为人脸检测器被Viola和Jones提出来的,后来Rainer Lienhart和Jochen Maydt将这个检测

    2024年02月12日
    浏览(40)
  • Python基于深度学习的人脸识别项目源码+演示视频,利用OpenCV进行人脸检测与识别 preview

    ​ 该人脸识别实例是一个基于深度学习和计算机视觉技术的应用,主要利用OpenCV和Python作为开发工具。系统采用了一系列算法和技术,其中包括以下几个关键步骤: 图像预处理 :首先,对输入图像进行预处理,包括读取图片、将图片灰度转换、修改图片的尺寸、绘制矩形

    2024年04月13日
    浏览(70)
  • 【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测

    人脸检测的目标是找出图像中所有的人脸对应的位置,算法的输出是人脸的外接矩形在图像中的坐标。使用 haar 特征和 cascade 检测器进行人脸检测是一种传统的方式,下面将给出利用 OpenCV 中的 haarcascade 进行人脸检测的代码。 可选的人脸检测模型(区别是检测速度和精度不同

    2023年04月12日
    浏览(63)
  • 人工智能-OpenCV+Python实现人脸识别(人脸检测)

    在OpenCV中使用Haar特征检测人脸,那么需要使用OpenCV提供的xml文件(级联表)在haarcascades目录下。这张级联表有一个训练好的AdaBoost训练集。首先要采用样本的Haar特征训练分类器,从而得到一个级联的AdaBoost分类器。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征

    2024年02月06日
    浏览(104)
  • 【opencv】python实现人脸检测和识别训练

    OpenCV 中的人脸识别通常基于哈尔特征分类器(Haar Cascade Classifier)进行。以下是 OpenCV 人脸识别的基本原理: Haar Cascade Classifier : 特征分类器 :Haar 特征是一种基于矩形区域的特征,可以用于图像中的对象检测。这些特征可以表示边缘、线和区域的变化等。 级联分类器 :

    2024年01月17日
    浏览(51)
  • opencv 基于haar特征的级联分类器实现图象识别原理

    暑假的时候做了一个智能机械臂,用到了opencv里的级联分类器,这里写一下我的理解 级联分类器上手简单,同时Haar特征支持一些特殊图形的检测,例如人脸,我训练的是一个纯色模型,效果并不好,不建议用该种方法识别一些颜色梯度变化不明显的物体 (1)haar特征    图

    2024年02月07日
    浏览(35)
  • Python+OpenCV 简单实现人脸检测多个和人脸识别 2(附代码)

    如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客 上篇请移步到Python+dilb 简单实现人脸检测(附代码)_水w的博客-CSDN博客 本篇是在上篇的工作基础上进行的。 目录 6 人脸检测多个 7 视频检测 8 拍照保存 9 训练

    2024年01月16日
    浏览(55)
  • Python|OpenCV-实现自动“追踪并检测”视频中的人脸识别(14)

    前言 本文是该专栏的第15篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在本专栏之前,笔者在文章《Python|OpenCV-实现检测人脸以及性别检测(12)》中,有详细介绍通过OpenCV实现对图像中的人物人脸进行性别以及人脸检测,对此领域感兴趣的同学,可直接点击翻阅

    2024年04月14日
    浏览(42)
  • 毕业设计——基于python-contrib-opencv的人脸识别及检测系统设计与实现(实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能)

    如需完整源码,可以联系博主获取 基于python-contrib-opencv,dlib,pyqt5。能够实现电脑端摄像头读取视频,实时人脸录入,人脸检测,人脸识别等功能。 一、引言 随着计算机视觉和人工智能技术的不断发展,人脸识别技术已成为智能安防、身份验证等领域的关键技术之一。而基于

    2024年04月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包