教你使用开源opencv实现人脸检测

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

教你使用开源opencv实现人脸检测

人脸检测是现在比较常用的功能,比如出租车司机人脸与司机驾照照片对比,门禁系统中进入者的人脸与人脸库中的人脸进行对比。要实现人脸对比,首先要实现的是人脸检测,在摄像头拍摄到的一张图片中,正确的检测到人脸的位置这就至关重要。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

1.人脸检测方法

目前人脸检测方法主要分为两大类,基于知识和基于统计。基于知识的人脸检测方法主要包括:模板匹配,人脸特征,形状与边缘,纹理特征,颜色特征。基于统计的人脸检测方法主要包括:主成分分析与特征脸法,神经网络模型,隐马尔可夫模型,支持向量机,Adaboost算法。基于知识的方法将人脸看成不同特征的特定组合,即通过人脸的眼睛、嘴巴、鼻子、耳朵等特征及其组合关系来检测人脸。基于统计的方法将人脸看成统一的二维像素矩阵,通过大量的样本构建人脸子空间,通过相似度的大小来判断人脸是否存在。

2.级联分类器简介

OpenCv能够实现对于物体的识别其中其主要作用的是他训练出的分类器,而分类器又可以分为强分类器和弱分类器,一个分类器的分类准确率在60%-80%,即:比随机预测略好,但准确率却不太高,我们可以称之为“弱分类器”,比如CART(classification and regression tree)。反之,如果分类精度90%以上,则是强分类器,弱分类器在adaptive boosting(Adaboost)的作用仅仅是提供了一个训练方向(就是看弱训练在那个特征(或者叫方向)上面的误差最大),然后在这个方向上面增强训练权值,即所谓强训练。最后组合起来的就是最终的结果。可以看到,弱训练只是要提供一个好的训练方向就行了,而强训练才是最终模型优良的关键,强分类器的设计在于如何组合。而级联分类器则是将多个强分类器组合起来,更进一步提高分类器的准确率,通过这一系列的训练方法,最终形成一个级联分类器,使准确率达到最高。

3.分类器的训练和使用

(1)分类器的训练

训练分类器可以使用OpenCv安装包中自带的两个程序(如图1)

教你使用开源opencv实现人脸检测

图1 自带程序

其中opencv_createsamples.exe用来创建样本描述文件,即告诉训练器什么是正样本,opencv_traincascade.exe用来训练级联分类器,此外还需要在同级目录下创建正负样本文件夹pos和neg,再pos和neg中加入路径文件pos.txt和neg.txt,用于训练过程中目标的寻找,训练所用开源数据集(如图2)教你使用开源opencv实现人脸检测

图2 训练样本

做好准备工作后就开始训练分类器,首先进入目标位置(如图3)

教你使用开源opencv实现人脸检测

图3 进入目标位置

这时候输入两个程序的名称可以看到是可以运行的(如图4、5)

教你使用开源opencv实现人脸检测

图4 部分步骤

教你使用开源opencv实现人脸检测

图5 部分步骤

之后开始创建正样本描述文件,执行以下命令(如图6)

opencv_createsamples.exe -vec pos.vec -info pos\pos.txt -bg neg\neg.txt -num 100 -w24 -h 24,便成功创建了样本描述文件pos.vec

教你使用开源opencv实现人脸检测

图6 部分步骤

有了样本描述文件就可以正式训练我们的分类器了,再命令行窗口输入以下命令(如图7)

opencv_traincascade.exe -data xml -vec pos.vec -bg neg\neg.txt -numPos 85 -numNeg 400 -numStages 12 -featureType HAAR -w 24 -h 24 -minHitRate 0.996 -maxFalseAlarmRate 0.5

便开始训练分类器了,最终会在xml文件夹下生成一系列分类器,其中的cascade.xml就是我们生成的分类器(如图8)

教你使用开源opencv实现人脸检测

图7 生成分类器

教你使用开源opencv实现人脸检测

图8 分类器示意图

(2)分类器的使用

调用分类器(如图9)

教你使用开源opencv实现人脸检测

图9 分类器调用

可以看到,训练的效果很理想,证明过程是正确的(如图10)

教你使用开源opencv实现人脸检测

图10 结果示意图

OpenCv是一个功能强大的开源库,在人工智能图像识别领域有着重要的地位,因此掌握其原理十分必要,本次实验不仅学习到了OpenCv的基本知识还探究了OpenCv分类器的训练和使用,有了这个基础我们就可以收集不同的训练集进行不同方面的分类器训练,从而实现自己的需求。课后学生用不同的训练集实现了各种物体的自动检测,例如宠物狗、安全帽、自行车的检测(如图11)

教你使用开源opencv实现人脸检测文章来源地址https://www.toymoban.com/news/detail-491271.html

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

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

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

相关文章

  • 【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测

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

    2023年04月12日
    浏览(60)
  • 使用opencv和dlib库(C++代码)实现人脸活体检测(眨眼、张嘴、摇头检测)

    本文章使用opencv和dlib库,使用C++代码实现了人脸活体检测,包括眨眼检测、张嘴检测以及摇头检测,可以对静态图片和活体进行有效区分。 dlib是一个开源的C++机器学习库,它提供了一系列用于图像处理、人脸检测、人脸识别、物体检测、图像标注等功能的算法和工具。dli

    2024年04月14日
    浏览(57)
  • 手把手教你完成一个Python与OpenCV人脸识别项目(对图片、视频、摄像头人脸的检测)超详细保姆级记录!

    课程来源: 一天搞定人脸识别项目!学不会up直接下跪!(python+opencv)_哔哩哔哩_bilibili 环境配置详见: 在conda虚拟环境中安装OpenCv并在pycharm中使用_conda虚拟环境安装opencv_好喜欢吃红柚子的博客-CSDN博客 目录 一、读取图片 1.1 imshow和WaitKey方法   1.2 代码实现 1.3 效果展示 

    2024年02月03日
    浏览(36)
  • 使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,模型下载......)

    要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。 参考链接: 1、OpenCV人脸检测 2、【OpenCV-Python】32.OpenCV的人脸检测和识别——人脸检测 3、【youcans 的图像处理学习课】23. 人脸检测:Haar 级联检测器 4、OpenCV实战5:LBP级联分类器

    2024年02月08日
    浏览(44)
  • 使用OpenCV工具包成功实现人脸检测与人脸识别,包括传统视觉和深度学习方法(附完整代码,吐血整理......)

    要实现人脸识别功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作。 参考链接: 1、OpenCV人脸检测 2、【OpenCV-Python】32.OpenCV的人脸检测和识别——人脸检测 3、【youcans 的图像处理学习课】23. 人脸检测:Haar 级联检测器 4、OpenCV实战5:LBP级联分类器

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

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

    2024年02月06日
    浏览(99)
  • OpenCV实现人脸关键点检测

    目录 实现过程 1,代码解读 1.1 导入工具包 1.2导入所需图像,以及训练好的人脸预测模型 1.3 将 dlib 的关键点对象转换为 NumPy 数组,以便后续处理 1.4图像上可视化面部关键点 1.5# 读取输入数据,预处理 1.6进行人脸检测 1.7遍历检测到的框 1.8遍历每个面部 2,所有代码 3,结果

    2024年04月23日
    浏览(58)
  • OpenCV实现人脸检测(Haar特征)

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

    2024年04月16日
    浏览(38)
  • 【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日
    浏览(37)
  • Python+OpenCV 简单实现人脸检测多个和人脸识别 2(附代码)

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

    2024年01月16日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包