基于Opencv中的haarcascade_frontalface_alt.xml的人脸检测

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


相信大家一定想知道haarcascade_frontalface_alt.xml是什么吧,不要着急,听我慢慢道来。

haarcascade_frontalface_alt.xml

'haarcascade_frontalface_default.xml'是OpenCV中已经训练好的人脸分类器文件。它是基于Haar特征的级联分类器,可以用于检测正脸的人脸。该文件是通过大量的正负样本训练而成,可以用于人脸检测的应用中。

一般情况下该人脸分类器是保存再Python\Python310\Lib\site-packages\cv2\data的文件中的该文件中,再文件还有其他的一些分类器,比如猫脸的分类器,haarcascade_frontalcatface.xml。

haarcascade_frontalface_default.xml,python,opencv,目标检测,计算机视觉

 

通过使用记事本直接代开'haarcascade_frontalface_default.xml'可以发现里面是训练完之后描述人脸特征的详细数据。该数据再运行时会交给计算机,计算机通过特征数据进行人脸的检测,(正脸检测)。

haarcascade_frontalface_default.xml,python,opencv,目标检测,计算机视觉

 

cv2.CascadeClassifier()是OpenCV中用于创建级联分类器对象的函数。它需要一个训练好的分类器文件作为参数,例如人脸检测需要使用已经训练好的人脸分类器文件。该函数返回一个CascadeClassifier对象,可以用于对图像或视频进行对象检测。例如,以下代码创建了一个人脸分类器对象:

import cv2 # 加载人脸分类器文件
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

其中,'haarcascade_frontalface_default.xml'是已经训练好的人脸分类器文件。通过调用cv2.CascadeClassifier()函数并传入该文件路径,得到一个人脸分类器对象face_cascade,可以用于对图像或视频进行人脸检测。

cv2.CascadeClassifier是OpenCV中的一个类,用于对象检测。它可以使用Haar级联分类器或LBP级联分类器来检测目标对象,例如人脸、车辆、眼睛等。它可以在Python中使用,并且需要一个训练好的分类器文件来进行检测。简单来说,cv2.CascadeClassifier是一个用于检测目标对象的类,可以在Python中使用,常用于人脸识别、车辆识别等领域。

有了这些,我们就可以通过视频或者摄像头实现基本的人脸检测。话不多说,我们直接上代码

import cv2

# 打开摄像头或者视频

# 使用cv2.VideoCapture()打开摄像头 默认摄像头打开为0,视频的话直接使用文件路径即可

cap = cv2.VideoCapture(0)

# 使用cv2中以及训练好的人脸检测分类器,创建级联分类器对象,这里时人脸检测的分类器对象

facedetector = cv2.CascadeClassifier(

    r"C:\Users\TZW\AppData\Local\Programs\Python\Python310\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml")



while True:

    #导入一帧图片

    ret,img = cap.read()

    # 转化为灰度图像

    gray = cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY)

    # 再灰度图像中检测人脸,返回的结果是包含起始坐标,以及宽和高。

    face= facedetector.detectMultiScale(gray)

    for x,y,w,h in face:

        # 在原图像上画一个圆圈

        cv2.circle(img,(x+w//2,y+h//2),(w//2),(0,0,255),thickness=2)

    # 展示图片

    cv2.imshow("img",img)

    key=cv2.waitKey(1000//24)

    # 输入“q”退出循环

    if key==ord("q") :

        break

# 释放占用的资源

cap.release()

cv2.destroyAllWindows()

代码的演示结果,我就不给大家展示,大家知道博主是一名帅哥就行了。(开个小小的玩笑)大家可以自己去敲一下代码,代码很简单。

大家如果上面有什么看不懂的代码而自己有不想去搜的话,可以使用chatgpt去查询相关的代码解释。个人觉得使用chatgpt能够大大的提到代码的理解水平,毕竟工具出来是给大家使用的,合理使用工具能够提高大家的学习效率(废话又多了)。

最后,希望这篇博客能给大家带来一点收获,每天进步一小点,我在下一篇博客等你。文章来源地址https://www.toymoban.com/news/detail-782077.html

到了这里,关于基于Opencv中的haarcascade_frontalface_alt.xml的人脸检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【OpenCV技能树】——OpenCV中的深度学习

    前言 : 😊😊😊欢迎来到本博客😊😊😊   目前正在进行 OpenCV技能树 的学习,OpenCV是学习图像处理理论知识比较好的一个途径,至少比看书本来得实在。本专栏文章主要记录学习OpenCV的过程以及对学习过程的一些反馈记录。感兴趣的同学可以一起学习、一起交流、一起

    2024年02月06日
    浏览(29)
  • OpenCV中的格式转换

    实际音视频开发过程芯片是做了 硬件加速 的,主要涉及到视频编解码。二次开发过程中需要对SDK做一定的封装使用才行。 写这篇文章的目的和硬编解码无关。 只是如无硬件转换接口的情况下如何对原始数据的转换,以便后续查看。 采集(IN) 这里说的采集方式是摄像头的采集

    2024年01月21日
    浏览(27)
  • OpenCV中的模板匹配

    OpenCV中的模板匹配 模板匹配是一项常见的计算机视觉任务,其目的是从输入图像中找到与给定模板最相似的部分。在OpenCV中,我们可以使用模板匹配算法来识别某个图案或对象在另一个图像中的位置。本文将介绍如何使用OpenCV进行模板匹配,并提供相应的源代码。 1.读取图像

    2024年02月06日
    浏览(34)
  • OpenCV中的相机标定

          之前在https://blog.csdn.net/fengbingchun/article/details/130039337 中介绍了相机的内参和外参,这里通过OpenCV中的接口实现对内参和外参的求解。       估计相机参数的过程称为相机标定(camera calibration)。相机标定是使用已知的真实世界模式(例如棋盘)来估计相机镜头和传感器的外

    2023年04月19日
    浏览(46)
  • OpenCV 中的字符识别

    OpenCV 中的字符识别通常使用 OCR 技术,OCR 可以识别图像中的字符并将其转换为可编辑的文本。 识别字符的方法有多种,以下是一些常见的方法: 基于模板匹配的字符识别方法:这种方法是将字符模板与待识别的图像进行匹配,从而识别出图像中的字符。模板匹配方法需要提

    2024年02月07日
    浏览(14)
  • Opencv中的滤波器

    一副图像通过滤波器得到另一张图像,其中滤波器又称为卷积核,滤波的过程称之为卷积。 这就是一个卷积的过程,通过一个卷积核得到另一张图片,明显发现新的到的图片边缘部分更加清晰了(锐化)。  上图就是一个卷积的过程,下面的是原始图像,上面的是卷积核。卷

    2024年01月22日
    浏览(29)
  • 探秘OpenCV中的findContours函数

    在计算机视觉领域,图像处理是一项重要的任务。而在图像处理的过程中,轮廓(Contours)的提取是一项基础且关键的操作。OpenCV库中的findContours函数就是用于找到图像中的轮廓的工具之一。本文将深入介绍findContours函数的作用、原理、应用场景,并结合C++和OpenCV提供一些简

    2024年01月21日
    浏览(28)
  • 一 OpenCV中的数据类型

    1. cv::Mat 2. cv::Point 主要用来表示二维点,也有表示三维点的模板类型; cv::Point p(int,  int)  最常用 ① cv::Point_T ② cv::Point2i          cv::Point_int ③ cv::Point2f          cv::Point_float ④ cv::Point2d         cv::Point_double ⑤ cv::Point2l          cv::Point_int64 cv::Point3(int,  int,  int) ①

    2024年02月05日
    浏览(28)
  • Opencv中的RNG-随机绘图

    在OpenCV中, RNG 是一个 随机数生成器类 ,用于生成各种类型的随机数,包括均匀分布或高斯分布的整数和浮点数。RNG类的实例化时可以接受一个无符号整数作为 种子值 ,这个种子值决定了随机数生成序列的起点,相同的种子值将产生相同的随机数序列。这 在需要可重复的实

    2024年02月21日
    浏览(27)
  • 17.OpenCV中的GFTTDetector类

    欢迎访问个人网络日志🌹🌹知行空间🌹🌹 这是使用 imgproc.hpp 中的 goodFeaturesToTrack 函数封装的类,其使用和 goodFeaturesToTrack 函数基本相似。 GFTTDetector 类用来提取对线的角点特征,角点检测(Corner Detection)也称为特征点检测,是图像处理和计算机视觉中用来获取图像局部特征

    2024年02月15日
    浏览(17)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包