OpenCV人脸检测案例实战

人脸检测是一种计算机视觉技术,旨在识别图像或视频中的人脸。这项技术的基本内容包括使用特定的算法和模型来定位和识别人脸,通常涉及在图像中寻找面部特征,如眼睛、鼻子、嘴巴等,以便准确地确定人脸的位置和边界。人脸检测技术的重要性在于它在许多领域中具有广泛的应用,包括人脸识别、安全监控、人脸融合等。

在人脸识别领域,人脸检测是一项关键技术,它为识别和验证个人身份提供了基础。通过检测和提取人脸特征,系统可以对个体进行准确的识别,用于解锁手机、进入安全区域、进行身份验证等场景。在安全监控方面,人脸检测可以帮助监控系统自动识别出监控画面中出现的人脸,并及时作出响应。此外,人脸检测还广泛应用于社交媒体、摄影美化、虚拟试衣间等领域,为用户提供更便捷和个性化的体验。

总之,人脸检测技术在当今社会扮演着重要的角色,不仅在提高安全性和便捷性方面发挥作用,还在促进科技创新和社会发展中具有广泛应用前景。

使用级联函数

OpenCV中提供了级联函数来实现人脸检测:

基本流程

具体流程如下:

函数介绍

在OpenCV中,人脸检测使用的是cv2.CascadeClassifier.detectMultiScale()函数,它可以检测出图片中所有的人脸。该函数由分类器对象调用,其语法格式为:

objects = cv2.CascadeClassifier.detectMultiScale( image[, scaleFactor[,

 minNeighbors[, flags[, minSize[, maxSize]]]]] )

式中各个参数及返回值的含义为:

  • image:待检测图像,通常为灰度图像。
  • scaleFactor:表示在前后两次相继的扫描中,搜索窗口的缩放比例。
  • minNeighbors:表示构成检测目标的相邻矩形的最小个数。默认情况下,该值为3,意味着有3个以上的检测标记存在时,才认为人脸存在。如果希望提高检测的准确率,可以将该值设置得更大,但同时可能会让一些人脸无法被检测到。
  • flags:该参数通常被省略。在使用低版本OpenCV(OpenCV 1.X版本)时,它可能会被设置为CV_HAAR_DO_CANNY_PRUNING,表示使用Canny边缘检测器来拒绝一些区域。
  • minSize:目标的最小尺寸,小于这个尺寸的目标将被忽略。
  • maxSize:目标的最大尺寸,大于这个尺寸的目标将被忽略。如果maxSize和minSize大小一致,表示仅在一个尺度上查找目标。通常情况下,将该可选参数省略即可。

objects:返回值,目标对象的矩形框向量组。该值是一组矩形信息,包含了每个检测到的人脸所对应矩形框的(x方向位置、y方向位置、宽度、高度)信息。

代码示例

Python实现代码如下:

# -*- coding: utf-8 -*-
"""
Created on Sat Feb 17 21:09:07 2024

@author: 李立宗

公众号:计算机视觉之光

知识星球:计算机视觉之光

"""

import cv2
# ===============1 原始图像处理====================
image = cv2.imread('manyPeople.jpg')
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
# ================2 加载分类器========================
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# =================3 人脸检测========================
faces = faceCascade.detectMultiScale(
    gray,
    scaleFactor = 1.04,
    minNeighbors = 18,
    minSize = (8,8))
# ===============4 打印输出的实现=====================
print("发现{0}张人脸!".format(len(faces)))
print("其位置分别是:")
print(faces)
# ==================5 标注人脸及显示=======================
for(x,y,w,h) in faces:
  cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2) 
cv2.imshow("result",image)
cv2.waitKey(0)
cv2.destroyAllWindows()

检测结果:

具体结果如下:

学习参考
 

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

参考文献

1、OpenCV轻松入门
李立宗,OpenCV轻松入门,电子工业出版社,2023


2、计算机视觉40例
李立宗,计算机视觉40例,电子工业出版社,2022

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/397307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode JS专栏刷题笔记(一)

一、前言 LeetCode 在前不久出了一个 JavaScript 专栏,这个专栏一个目的是为了非前端工程师学习 JS,另一个是为了前端工程师提升 JS 能力。 因此在这个专栏中,基本不涉及什么具体算法问题,都是一些 JS 的入门语法与常见的 JS 面…

安卓游戏开发之图形渲染技术优劣分析

一、引言 随着移动设备的普及和性能的提升,安卓游戏开发已经成为一个热门领域。在安卓游戏开发中,图形渲染技术是关键的一环。本文将对安卓游戏开发中常用的图形渲染技术进行分析,比较它们的优劣,并探讨它们在不同应用场景下的适用…

从零开始:开发多商户商城APP的技术指南

当下,电子商务正在飞速发展,多商户商城APP的需求也与日俱增。本篇文章,小编将为大家深度详解如何开发多商户商城APP。 1.确定功能需求 在着手开发多商户商城APP之前,首先需要明确功能需求。这包括但不限于: -用户注…

如何在CentOS安装SQL Server数据库并实现无公网ip环境远程连接

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库,并结合cpolar内网穿透工具&#xff0…

MongoDB文档插入

文章目录 MongoDB文档插入对比增删改查文档插入 MongoDB写安全机制非确认式写入 MongoDB文档查询参数说明查询操作符比较查询操作符逻辑查询操作符元素查询操作符数组查询操作符 模糊查询区别:$regex操作符中的option选项 MongoDB游标介绍游标函数手动迭代游标示例游标介绍 Mon…

揭秘智能商品计划管理系统:为何服装企业老板争相引入?

在如今日新月异的商业环境中,服装企业老板们纷纷将目光转向了一种名为“智能商品计划管理系统”的创新工具。这种系统不仅具有高度的自动化和智能化特性,还能显著提升企业的运营效率、减少库存积压,并帮助企业在激烈的市场竞争中占据优势地位…

xilinx除法器的使用

平台:Vivado2018.3. 芯片:xcku115-flva1517-2-i (active) 最近学习使用了xilinx除法器,在使用过程中出现了很多次除法器的结果和我预计的结果不一致,特此记录学习一下。 参考文件:pg151.下载地址 pg151-div-gen.pdf …

简单了解一下加密算法

1.1单向散列算法 单向散列函数算法也称 Hash(哈希)算法,是一种将任意长度的消息压缩到某一固定长度(消 息摘要)的函数(该过程不可逆)。Hash 函数可用于数字签名、消息的完整性检测、消息起源的认 证检测等。常见的散列算法有MD5 、SHA 、RIPE-MD 、HAVAL 、N-Hash等…

【Pygame手册03/20】用 pygame 模块draw绘制形状

目录 一、说明二、画图函数2.1 接口draw下的函数2.2 pygame.draw.rect()2.3 pygame.draw.polygon()2.4 pygame.draw.circle()2.5 pygame.draw.ellipse()2.6 pygame.draw.arc()2.7 pygame.draw.line ()2.8 pygame.draw.lines()2.9 pygame.draw.aaline()2.10 pygame.draw.aaline…

【EI会议征稿通知】2024年通信安全与信息处理国际学术会议(CSIP 2024)

2024年通信安全与信息处理国际学术会议(CSIP 2024) 2024 International Conference on Communication Security and Information Processing 随着全球信息化的深入发展,通信安全与信息处理已成为当今社会关注的热点问题。为了加强国际间的学术交流与合…

Java之获取Nginx代理之后的客户端IP

Java之获取Nginx代理之后的客户端IP Nginx代理接口之后,后台获取的IP地址都是127.0.0.1,解决办法是需要配置Nginx搭配后台获取的方法,获得设备的真实地址。我们想要获取的就是nginx代理日志中的这个IP nginx配置 首先在nginx代理的对应lo…

opencv安装介绍以及基本图像处理详解

文章目录 一、什么是OpenCV ?二. OpenCV 安装1. 下载地址2.安装命令:pip install opencv-python 三、图像基础1. 基本概念2. 坐标系3. 基本操作(彩色图片)(1)读取图片:cv2.imread( )&#xff08…

ThreadLocal(3):ThreadLocal的内部结构

下面介绍ThreadLocal的内部结构,探究它能够实现线程数据隔离的原理。 1 常见的误解 ​如果我们不去看源代码的话,可能会猜测ThreadLocal是这样子设计的:每个ThreadLocal都创建一个Map,然后用线程作为Map的key,要存储…

this的指向问题总结

this一般会出现在函数里面,但是一般情况下只有在函数被调用执行时,才能确定this指向哪个对象。一般情况下this是指调用函数的对象。 1.在全局作用域下或者普通函数中this的指向一般都是window对象 window.fn(),普通函…

前端实现鼠标点击箭头旋转180度

效果&#xff1a; <div click"showChecklist" class"checkCLass cur pr-20px pl-20px pa flex ai-center"><span>{{ checkListStatus() }}</span><p class"trangle"></p></div> 下面是三角形状的样式 .tr…

qt对stl模型显示的封装

我一直都想把vtk显示这一块做成一个封装的静态lib&#xff0c;然后别的类只需要我暴露出的头文件和lib文件就可以了&#xff0c;这次我实现的是对一个放stl文件的文件夹下的stl文件做显示&#xff0c;用的是vs2017qt,实现的主要效果如下&#xff1a; 因为qt自身带的标题栏显示…

CAN_相关的测试用例+测试方法+测试工具使用+输出测试报告

测试类型: 第一:通信测试 第二:间接网络管理测试 第三:AUTOSAR网络管理测试 第四:诊断协议栈Diva测试 第五:诊断协议补充测试 第六:Bootloader测试 第七:网…

用html编写的招聘简历

用html编写的招聘简历 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

架构师蓝图: 理解软件风格与模式

本文介绍了10种软件架构风格及其对应设计模式&#xff0c;梳理了各个风格的优缺点和适用场景&#xff0c;帮助读者在架构选项过程中能有的放矢&#xff0c;做出更适合业务场景的架构设计。原文: The Architect’s Blueprint: Understanding Software Styles and Patterns with …

onlyoffice document builder使用

office这个体系分为四个大教程 1、【document server文档服务器基础搭建】 2、【连接器(connector)或者jsApi调用操作office】-进阶 3、【document builder文档构造器使用】-进阶 4、【Conversion API(文档转化服务)】-进阶 如果需要连接器&#xff0c;可以查看&#xff1…