OpenCVHaar级联器实现人脸捕捉和微笑检测

概念

  • Haar 级联分类器是由多个简单分类器组成的复杂分类器,每个简单分类器都由 Haar 特征训练得到。
  • Haar 级联器因其简单和快速而被应用于某些场景。
  • OpenCV 提供多种预训练的 Haar 特征级联分类器,其已经在大量图像上进行了训练,并且针对特定类型的对象检测进行了优化。用户可以直接下载使用这些预训练模型,无需自己从头开始训练。

级联器实现人脸捕捉步骤:

  1. 安装opencv库:pip install opencv-contrib-python。国内镜像:pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple。
  2. 下载haarcascades包。
  3. 开始写代码。
流程图例

1.

2.

步骤3代码:
import cv2def detect_faces(frame, face_cascade):# 将帧转换为灰度图像,以减少计算量并提高检测速度gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# 检测灰度图像中的人脸faces = face_cascade.detectMultiScale(gray,scaleFactor=1.1,  # 图像缩放比例minNeighbors=5,  # 检测到的对象至少要有5个邻居minSize=(30, 30),  # 对象的最小尺寸flags=cv2.CASCADE_SCALE_IMAGE)# 在每个检测到的人脸周围画矩形框for (x, y, w, h) in faces:cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)return frame# 加载预训练的 Haar 特征级联分类器模型
face_cascade = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_alt2.xml')# 打开摄像头
cap = cv2.VideoCapture(0)while True:# 从摄像头读取一帧ret, frame = cap.read()# 如果读取帧失败,则退出循环if not ret:print("无法获取摄像头数据,退出程序。")break# 使用 Haar 级联分类器检测人脸frame_with_faces = detect_faces(frame, face_cascade)# 显示结果帧cv2.imshow('Face Detection', frame_with_faces)# 按 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头资源并关闭窗口
cap.release()
cv2.destroyAllWindows()

级联器实现微笑检测:

环境安装同上,注意路径引用就可,导包没啥好讲的。

代码: 
#导入opencv库,安装可用 pip install opencv-python
import cv2
#加载人脸检测模型
face = cv2.CascadeClassifier('./haarcascades/haarcascade_frontalface_default.xml')
#加载微笑检测模型
smile = cv2.CascadeClassifier('./haarcascades/haarcascade_smile.xml')cap = cv2.VideoCapture(0)  # 初始化摄像头
while True:  # 处理每一帧ret, frame = cap.read()  # 读取一帧frame = cv2.flip(frame, 1)  # 图片翻转, 水平翻转# 没有读到,直接退出if ret is None:breakgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 灰度化(彩色BGR-->灰度Gray)face_detect = face.detectMultiScale(gray,  # 人脸检测scaleFactor=1.1,minNeighbors=5,minSize=(5, 5))# ==================处理每个人脸=======================for (x, y, w, h) in face_detect:  # 得到人脸所在位置# 绘制方框cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)# 提取人脸所在区域smile_rect = gray[y:y + h, x:x + w]# 微笑检测,仅在人脸区域内检测smile_detect = smile.detectMultiScale(smile_rect,scaleFactor=1.5,minNeighbors=5,minSize=(50, 50))for (sx, sy, sw, sh) in smile_detect:# 显示文字“smile”表示微笑了cv2.putText(frame, 'smile', (x, y), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 255, 0), 2)# 显示结果cv2.imshow('frame', frame)key = cv2.waitKey(1)if key == 27:  # 27为键盘Esc键breakcv2.destroyAllWindows()  # 关闭打开的图像窗口
cap.release()  # 释放视频捕获对象

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【程序员写的诗】《悔思践》日期:2017-05-20 作者:橙 附:AI豆包点评和解释

悔思践 《悔思践》 日期:2017-05-20 作者:橙 问君心,愁几何。 望空杯,颜现愁。 苦衷苦,鸿志立。 乐中乐,断践行。 不践行,愁中悔。 悔中望,年已高。 鸿志行,行中思。 苦…

SH17:个人防护设备检测数据集(猫脸码客 第189期)

SH17 Dataset for PPE Detection 一、引言 在当今快速发展的工业社会中,工作场所事故仍频繁发生,对人类安全构成重大威胁,尤其是在建筑、制造等高风险行业中。为了有效减少这些事故带来的伤害,个人防护设备(Personal…

不止于纸上谈兵,用代码案例分析如何确保RabbitMQ消息可靠性?

文章目录 文章导图可靠性分析-RabbitMQ 消息丢失的三种情况生产者发送可靠性消息实现2种方式1、采用事务消息事务消息投递方案设计1、本地库创建一个消息表(t_msg)2、事务消息投递的过程知识点拓展:Spring事务同步器 3、异常情况4、消息投递补偿job 核心代码讲解发送…

PyQt5-loading-圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…

2024ICPC网络赛1: C. Permutation Counting 4

题意&#xff1a; 给定 n n n个区间 [ L i , R i ] [L_i,R_i] [Li​,Ri​]设集合 A { { p i } ∣ p i 为排列&#xff0c; L i < p i < R i } A\{ \{ p_i\} | p_i为排列&#xff0c;Li<p_i<R_i\} A{{pi​}∣pi​为排列&#xff0c;Li<pi​<Ri​}&#xff…

Facebook直播限流是什么原因?是ip地址导致的吗

随着社交媒体和直播行业的蓬勃发展&#xff0c;Facebook直播已成为众多企业和个人进行品牌推广、产品展示和互动交流的重要平台。然而&#xff0c;在享受直播带来的便利与效益的同时&#xff0c;不少用户也面临着直播限流的困扰。本文将探讨Facebook直播限流的原因&#xff0c;…

京东App秒级百G日志传输存储架构设计与实战

本文作者&#xff1a;平台业务研发部-武伟峰&#xff0c;数据与智能部-李阳 背景 在日常工作中&#xff0c;我们通常需要存储一些日志&#xff0c;譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志&#xff0c;从而对系统在运行时出现的问题有排查的依据。 …

8.1 溪降技术:横渡绳

目录 8.1 横渡绳将其置于上下文中&#xff1a;观看视频课程电子书&#xff1a;横渡绳一级横渡绳&#xff1a;识别使用横渡绳固定到横渡绳V7提示&#xff1a;保持张力中间点通过横渡绳上的中间点固定到锚点总结 8.1 横渡绳 绳上移动 横渡绳是一条水平安全绳&#xff0c;探险者可…

Leetcode—移除链表元素

题目描述 思路 创建新链表&#xff0c;将原链表中的值不为val的结点尾插到新链表中 画图解释 定义一个指针pcur去遍历原链表&#xff0c;创建一个空链表&#xff0c;newHead和newTail在初始情况指向空。 pcur遍历原链表不为val的结点尾插到新链表中 完整代码 /*** Definitio…

分治算法归并排序

分治算法 基本概念 把一个复杂的问题分成两个或更多的相同或相似的子问题&#xff0c;再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解&#xff0c;原问题的解即子问题的解的合并。 分治法的基本步骤 分治法在每一层递归上都有三个步骤&#xff1a; step1分…

Linux内核(Kernel)启动过程分析

文章目录 Linux内核&#xff08;Kernel&#xff09;启动过程一、内核启动的基本流程1. 启动加载程序 (Bootloader)2. 内核解压阶段3. 内核启动&#xff08;Kernel Startup&#xff09;4. start_kernel函数5. 启动初始进程 二、内核文件加载及解压缩1.为什么是压缩文件2.文件类型…

找搭子是什么意思?有没有找搭子的平台?靠谱找搭子软件推荐!

“找搭子” 指寻找在特定活动或兴趣方面有共同爱好的伙伴。比如饭搭子一起吃饭&#xff0c;运动搭子共同健身。它满足人们在特定场景下的社交需求&#xff0c;让生活更丰富有趣&#xff0c;是一种新型社交方式。以下是国内排名靠前的找搭子平台 1. 咕哇找搭子小程序&#xff1a…

Bio-Linux-shell详解-2-基本Shell命令快速掌握

Bio-Linux-shell详解-1-从0开始-CSDN博客 想了解基本知识可以先看上文&#xff0c;本次我们讲述一些Shell的基本命令。 目录 1.shell输入命令 2.man命令查看说明文档 3.文件查看命令 &#xff08;1&#xff09;linux文件结构 &#xff08;2&#xff09;cd切换工作目录 &…

SOCKS4和SOCKS5的区别是什么?

SOCKS4和SOCKS5是两种常用的网络代理协议&#xff0c;它们在功能、性能和应用场景上存在一些关键的区别。以下是对这两种协议区别的详细解析&#xff1a; 1. 支持的协议类型 SOCKS4&#xff1a;只支持TCP协议&#xff08;传输控制协议&#xff09;。这意味着SOCKS4代理只能用…

春秋云境靶场之CVE-2022-29464

一.靶场环境 1.下载靶场 根据题目提示&#xff0c;存在文件上传漏洞 2.启动靶场 打开之后&#xff0c;页面显示 然后就跳转到一个登录页面 二.登录页面 1.尝试登录 我们尝试弱口令登录admin,admin&#xff0c;跳转到连接超时页面 当我们再次点击这个链接后&#xff0c;就会…

旋转链表问题(python3)

旋转链表 问题描述解题思路代码实现 问题描述 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3] 链表中节点的数目在范围 [0, 500] 内-100 < Node.va…

队列-------

队列总览 队列的定义 队列的基本操作 队列回顾 顺序队列总览 队列的顺序实现 队列的初始化 入队操作&#xff0c;rear&#xff0c;后面的&#xff0c;下一个队列元素要插入的位置。front&#xff0c;前面的&#xff0c;当前队列的第一个元素。 循环队列入队操作 循环…

基于windows的mysql5.7安装配置教程

目录 0.写在前面的话 1.下载安装包 2.进行目录选择和解压操作 3.配置环境变量 4.创建my.ini文件 5.管理员运行终端 6.安装mysqld 7.初始化数据库 8.启动mysql服务 9.进入mysql管理终端 10.修改root密码 11.刷新权限 12.注销内容 13.重启mysql 14.输入密码测试 1…

17、Python如何读写文本文件

Python2与Python3文件读写的差异 在Python 2和Python 3之间&#xff0c;文件读写操作存在显著差异&#xff0c;主要是因为字符串的语义发生了变化。 python 2.x&#xff1a;写入文件前对unicode编码&#xff0c;读入文件后对二进制字符串解码。python 3.x&#xff1a;open函数…

【AI视频】AI虚拟主播制作初体验:从生成数字人到视频创作全流程

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI视频 | AI数字人 文章目录 &#x1f4af;AI虚拟主播&#x1f4af;使用AI绘画工具生成数字人借助GPT生成数字人所需的提示词方案一&#xff1a;使用Midjourney生成数字人方案二&#xff1a;使用TensAI生成数字人补充方案三&…