当前位置: 首页 > news >正文

OpenCV视觉--视频人脸微笑检测(超详细,附带检测资源)

目录

概述       

 具体实现

1.加载分类器

 2.打开摄像头并识别人脸

3.处理人脸并检测是否微笑

效果

总结


概述       

        OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛应用于图像处理和视频分析等领域。在OpenCV的众多功能中,人脸微笑检测是一项极具吸引力的技术,它结合了人脸检测技术和表情分析技术,能够自动识别和定位图像或视频中人脸的微笑表情。这一技术在人机交互、情感分析、安全监控以及用户体验研究等领域展现出巨大的应用潜力和价值。

        人脸微笑检测的实现过程通常包括两个主要步骤:首先,通过人脸检测技术定位图像或视频中的人脸区域;然后,在检测到的人脸区域上应用微笑检测算法,判断人脸是否呈现微笑表情。

 具体实现

1.加载分类器

模型资源在文章开头

#导入opencv库,安装可用 pip install opencv-python
import cv2
#加载人脸检测模型
face = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
#加载微笑检测模型
smile = cv2.CascadeClassifier('./haarcascade_smile.xml')

 2.打开摄像头并识别人脸

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))

objects = cv2.CascadeClassifier.detectMultiScale( image,scaleFactor,minNeighbors, minSize,maxSize)
其中,各个参数及返回值的含义如下。
·image:待检测图像,通常为灰度图像。
·scaleFactor:表示在前后两次相继扫描中搜索窗口的缩放比例。识别,扫描,按照不同比例来进行扫描
·minNeighbors:表示构成检测目标的相邻矩形的最小个数。在默认情况下,该参数的值为 3,
表示有 3 个以上的检测标记存在时才认为存在人脸。如果希望提高检测的准确率可以将该参数的值设置得更大,
但这样做可能会让一些人脸无法被检测到。
·minSize: 目标的最小尺寸,小于这个尺寸的目标将被忽略。
·maxSize: 目标的最大尺寸,大于这个尺寸的目标将被忽略。通常情况下,将该可选参数省略即可。
若 maxSize 和 minSize 大小一致,则表示仅在一个尺度上查找目标。
·objects: 返回值,目标对象的矩形框向量组。该值是一组矩形信息,
包含每个检测到的人脸对应的矩形框的信息 (x轴方向位置、y轴方向位置、宽度、高度)。

3.处理人脸并检测是否微笑

    # ==================处理每个人脸=======================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()  #释放视频捕获对象

cv2.putText(image, ' 绘制内容 ', (绘制位置), 字体类型, 字体大小, (字体颜色), 线条粗细)

效果

该图为打开摄像头后,将手机图片放置摄像头前检测的效果

总结

        通过OpenCV实现人脸微笑检测,不仅能够帮助我们更好地理解和分析人类的情感状态,还能够为各种智能应用提供丰富的情感信息支持。例如,在人机交互系统中,通过检测用户的微笑表情,系统可以自动调整交互策略,提供更加贴心、个性化的服务;在安全监控领域,通过实时监测人脸的微笑表情,可以及时发现异常情况,提高安全防范能力。

http://www.lryc.cn/news/385793.html

相关文章:

  • docker 搭建 AI大数据模型 --- 使用GPU
  • 面向对象, 常用类, 集合, 异常, JDBC, mysql数据库 复习
  • js取数组最大值之Math.max、Math.max.apply
  • 各种中间件的安装
  • 【Mysql】多表查询、隐式内链接、显式内连接、左外连接、右外连接
  • Linux驱动开发(三)--新字符设备驱动开发 LED驱动开发升级
  • MCU的最佳存储方案CS创世 SD NAND
  • 40岁学习java是否需要报班学习?
  • Vitis Accelerated Libraries 学习笔记--OpenCV 运行测试
  • 加固三防平板如何提高轨道交通系统的运营效率?
  • Django 靓号管理系统:实现登录功能
  • 【Solr 学习笔记】Solr 源码启动教程
  • Java中的事件驱动编程模型
  • Python 语法基础一
  • 从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南
  • 工业边缘计算网关
  • 【C++ 初阶路】--- 类和对象(末)
  • bable 【实用教程】
  • Android中使用startActivityForResult启动活动
  • NineData和华为云在一起!提供一站式智能数据库DevOps平台
  • 深入解析 Redisson分布式锁看门狗机制
  • Apache Arrow 和数据的未来:开放标准推动人工智能发展
  • Vue项目生产环境的打包优化
  • oracle数据库之使用Java程序调用存储过程(二十四)
  • 西电953总分第一、专业课第一考研上岸
  • pytorch-模型训练
  • Linux /proc目录总结
  • 【JavaEE】浅谈线程(二)
  • 爬虫:爬取知乎热榜一级评论及回答2024不包含翻页
  • AI 编程探索- iOS动态标签控件