news 2026/7/4 3:15:14

OpenCV案例——微笑检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenCV案例——微笑检测

一、项目概述

项目采用分层检测逻辑,先识别画面中的人脸区域,再只在人脸范围内检测微笑,有效规避背景干扰,提升识别准确率。程序运行后会调用本地摄像头,绿色框标记人脸,蓝色框标记微笑区域,检测到微笑时画面会显示 smile 提示文字,按下 ESC 键即可退出程序,非常适合入门学习视频流处理、目标检测基础原理。

二、代码实现

1.加载预训练检测模型

代码中加载了两个 OpenCV 官方预训练的 XML 特征模型,分别是正面人脸检测模型和微笑检测模型。这两个模型是官方训练好的,无需我们手动训练,直接调用即可实现目标识别,也是本项目的核心。

2.循环帧处理

使用 while 死循环持续读取摄像头画面,cap.read () 获取每一帧图像,返回读取状态和图像数据。

(1)视频预处理

同时对画面进行水平翻转,解决原生摄像头画面左右颠倒的问题,更符合日常观看习惯。增加状态判断,画面读取失败时直接退出循环,防止程序报错崩溃。

(2)人脸提取

调用 detectMultiScale 方法进行多尺度人脸检测,scaleFactor 控制图像缩放比例,适配远近不同的人脸,minNeighbors 过滤误检区域,minSize 筛选有效人脸尺寸。该方法会返回画面中所有人脸的坐标和宽高数据。

(3)微笑检测与标记

在截取的人脸局部区域中进行微笑检测,相比于人脸检测,微笑检测的参数更严格,有效过滤微小干扰。由于微笑检测的坐标是人脸局部相对坐标,需要叠加人脸全局坐标完成坐标换算,最后用蓝色框标记微笑区域,同时在画面打印 smile 文字,直观提示检测成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 3:15:11

React Server Components 边界:不是所有组件都该搬到服务端

React Server Components 边界:不是所有组件都该搬到服务端 React Server Components 带来了新的架构选择。服务端组件可以减少客户端包体、直接访问后端资源,也能让一些页面更快。但它不是"把所有组件搬到服务端"的按钮。交互状态、浏览器 AP…

作者头像 李华
网站建设 2026/7/4 3:14:45

从 0 学习 Alibaba Open Code Review(三):Git Diff 解析流程

前言 上一篇文章中,从源码角度找到了 ocr review 的命令入口。 当用户执行: ocr review程序会从 cmd/opencodereview/main.go 进入命令分发逻辑,然后进入: runReview(args[1:])接着会调用: parseReviewFlags(args)解析…

作者头像 李华
网站建设 2026/7/4 3:14:20

第六篇:《内存分析工具:vmstat、smem、pmap、Valgrind》

理解了内存管理的原理之后,需要用工具把理论“可视化”。内存分析工具链可以分为三个层次:系统级(vmstat,看整体趋势)、进程级(smem、pmap,看具体进程的内存分布)和代码级&#xff0…

作者头像 李华
网站建设 2026/7/4 3:14:01

个人AI聊天机器人真的必要吗?三重过滤网评估技术适配度

1. 这不是又一个“AI聊天机器人教程”,而是一次对技术存在意义的诚实复盘“Rethinking the Necessity of Personal AI Chatbots in Modern Society”——这个标题里没有一行代码,不提任何模型参数,也没列一个部署步骤。它问的是一个被我们集体…

作者头像 李华
网站建设 2026/7/4 3:12:29

深入AI生产实践下,关于AI产品边界的深刻认识

一、局限性任何模型都永远存在三种局限性,即知识边界、推理边界、行为边界,只是对于不同模型有不同程度的体现。 1、知识边界:由于模型在特定任务下缺少相应的知识,而使用其泛化的理解力以实现目的,出现不稳定及不精准…

作者头像 李华