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

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

前言

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

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

程序流程

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

代码

import cv2

# 原图
img = xxx

# 使用预训练模型创建 Cascade 分类器
getCascade = lambda model_name: cv2.CascadeClassifier(cv2.data.haarcascades + model_name)
faceCascade = getCascade("haarcascade_frontalface_default.xml")

# 获取原图像灰度图
imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 识别,将结果存储到 faces 变量中
faces = faceCascade.detectMultiScale(imgGray , 1.2 , 8)

for (x,y,w,h) in faces:
    
    # 将结果绘制到原图中
    cv2.rectangle(img, (x,y), (x+w,y+h), (0,0,255) ,2)

# 显示图像
cv2.imshow("img", img)
cv2.waitKey(0)

可选的人脸检测模型(区别是检测速度和精度不同):

  • haarcascade_frontalface_alt.xml
  • haarcascade_frontalface_alt2.xml
  • haarcascade_frontalface_alt_tree.xml
  • haarcascade_frontalface_default.xml
  • haarcascade_profileface.xml

说明:使用 haar 特征和 cascade 检测器进行目标检测属于传统机器学习的方式,检测精度较低,效果并不是非常理想

从图像中检测人脸

'''
Author: CloudSir
@Github: https://github.com/CloudSir
Date: 2023-04-05 10:03:53
LastEditTime: 2023-04-05 10:08:37
LastEditors: CloudSir
Description: 
'''
import cv2

# 原图
img = cv2.imread("./test.jpg")

# 使用预训练模型创建 Cascade 分类器
getCascade = lambda model_name: cv2.CascadeClassifier(cv2.data.haarcascades + model_name)
faceCascade = getCascade("haarcascade_frontalface_default.xml")

# 获取原图像灰度图
imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 识别,将结果存储到 faces 变量中
faces = faceCascade.detectMultiScale(imgGray , 1.2 , 8)

for (x,y,w,h) in faces:
    
    # 将结果绘制到原图中
    cv2.rectangle(img, (x,y), (x+w,y+h), (0,0,255) ,2)

cv2.imshow("img", img)
cv2.waitKey(0)

原图:
【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测
结果:
【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测文章来源地址https://www.toymoban.com/news/detail-411341.html

从视频中检测人脸

'''
Author: CloudSir
@Github: https://github.com/CloudSir
Date: 2023-04-03 19:50:34
LastEditTime: 2023-04-05 09:59:51
LastEditors: CloudSir
Description: 
'''
import cv2
import numpy as np

cap = cv2.VideoCapture("./test.mp4")

while cap.isOpened():
    img = cap.read()[1]
    getCascade = lambda model_name: cv2.CascadeClassifier(cv2.data.haarcascades + model_name)
    faceCascade = getCascade("haarcascade_frontalface_default.xml")
    imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = faceCascade.detectMultiScale(imgGray, 1.2, 8)

    for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
        print(x, y, w, h)

    cv2.imshow("cam", img)
    if cv2.waitKey(1) == ord('q'): # 按下q退出
        cv2.destroyAllWindows()
        cap.release()
        break

从摄像头中实时检测人脸

'''
Author: CloudSir
@Github: https://github.com/CloudSir
Date: 2023-04-03 19:50:34
LastEditTime: 2023-04-05 09:59:51
LastEditors: CloudSir
Description: 
'''
import cv2
import numpy as np

cap = cv2.VideoCapture(0)
while cap.isOpened():
    img = cap.read()[1]
    img = cv2.flip(img, 1) # 镜像

    getCascade = lambda model_name: cv2.CascadeClassifier(cv2.data.haarcascades + model_name)
    faceCascade = getCascade("haarcascade_frontalface_default.xml")
    imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = faceCascade.detectMultiScale(imgGray, 1.2, 8)

    for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
        print(x, y, w, h)

    cv2.imshow("cam", img)
    if cv2.waitKey(1) == ord('q'): # 按下q退出
        cv2.destroyAllWindows()
        cap.release()
        break

到了这里,关于【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【计算机视觉】OpenCV实现单目相机标定

    文章目录 单目相机标定(基于Python OpenCV) 1.上期填坑 2.单目相机标定 2.1 数据采集 2.2 角点提取 2.3 参数求解 2.4 参数评估(重投影误差) 2.5 相机位姿(棋盘位姿)可视化 2.6 同Matlab标定结果比较 在开始本篇博客之前,先填一下上一篇博客【计算机视觉】基于ORB角点+RANSAC算法实现图像

    2023年04月18日
    浏览(45)
  • 【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头

    Droidcam 是一款可以将手机变成网络摄像头的工具,我们可以利用 Droidcam 让 OpenCV 拥有调用手机摄像头的能力。 2.1 安装 DroidCam 在手机和电脑上分别安装 DroidCam 的客户端和服务端 下载地址:https://pan.baidu.com/s/1DrBn3P1Bx-SXa4d6oziifA?pwd=gr1o 提取码:gr1o 2.2 测试连接状态 手机和电脑需

    2024年02月09日
    浏览(33)
  • 使用计算机视觉实战项目精通 OpenCV:6~8

    原文:Mastering OpenCV with Practical Computer Vision Projects 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。 非刚

    2023年04月21日
    浏览(62)
  • 计算机视觉传统图像处理库opencv的使用

    人工智能领域的图像处理分支,整理了计算机视觉传统图像处理库opencv的使用网址链接。 opencv使用范围,主要用在计算机视觉、视频分析、机器学习、医学影像处理、自动驾驶、工业检测、游戏开发上。 1):opencv效果视频 opencv10个应用场景 - 知乎 2):opencv介绍 AI必备技能

    2024年02月09日
    浏览(30)
  • 使用 OpenCV4 和 C++ 构建计算机视觉项目:1~5

    原文:Building Computer Vision Projects with OpenCV 4 and C++ 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。 计算

    2023年04月20日
    浏览(35)
  • 实战指南:使用OpenCV 4.0+Python进行机器学习与计算机视觉

    💂 个人网站:【办公神器】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 计算机视觉和机器学习的融合为我们带来了前所未有的机会和挑战。从智能助手到

    2024年02月13日
    浏览(37)
  • 计算机视觉:使用dlib实现人脸检测

    Dlib是一个广泛使用的开源库,在计算机视觉和机器学习领域具有重要影响。它是由Davis King在2002年开发,主要用C++语言编写,但也提供了Python接口。Dlib结合了高效的算法和易用性,使其成为学术界和工业界的热门选择。 多样的机器学习算法:Dlib包含丰富的机器学习算法,如

    2024年04月28日
    浏览(31)
  • 计算机视觉入门 - MacOS搭建Python的OpenCV环境并在VScode上使用的详细步骤(完整版)

    目录 过程: 下载VScode编辑器: 在VScode中安装Python插件:  安装Python解释器: 测试Python程序:  安装wget插件: 安装cmake插件:  安装opencv: 通过程序来测试opencv: 运行成功:  要使用的东西:VScode编辑器、Terminal终端、Homebrew软件包管理工具、Python、OpenCV 首先在Mac上下载

    2024年01月16日
    浏览(39)
  • 计算机视觉:OpenCV相机标定

    针孔照相机模型是一种经典的相机模型,它将相机视为一个针孔,将场景中的点投影到成像平面上。在这个模型中,相机的 内参和外参 描述了相机的几何形状和相机的姿态。 相机的 内参矩阵 描述了相机的内部几何形状,包括相机的焦距、像素尺寸和像素坐标原点。相机的

    2024年01月19日
    浏览(47)
  • 计算机视觉(OpenCV+TensorFlow)

    本系列文章是OpenCV系列文章的第三篇,仍然跟随上篇内容主要聚焦于图像的一些操作 在通常情况下我们使用大小恒定的图像。但在某些情况下,我们需要使用不同分辨率的同幅图像,例如,在搜索图像中的某些内容比如脸部信息时,并不确定该内容在图像中占据的大小。这种

    2024年02月05日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包