OpenCV案例——微笑检测

发布时间:2026/7/4 3:15:29
OpenCV案例——微笑检测 一、项目概述项目采用分层检测逻辑先识别画面中的人脸区域再只在人脸范围内检测微笑有效规避背景干扰提升识别准确率。程序运行后会调用本地摄像头绿色框标记人脸蓝色框标记微笑区域检测到微笑时画面会显示 smile 提示文字按下 ESC 键即可退出程序非常适合入门学习视频流处理、目标检测基础原理。二、代码实现1.加载预训练检测模型代码中加载了两个 OpenCV 官方预训练的 XML 特征模型分别是正面人脸检测模型和微笑检测模型。这两个模型是官方训练好的无需我们手动训练直接调用即可实现目标识别也是本项目的核心。2.循环帧处理使用 while 死循环持续读取摄像头画面cap.read () 获取每一帧图像返回读取状态和图像数据。1视频预处理同时对画面进行水平翻转解决原生摄像头画面左右颠倒的问题更符合日常观看习惯。增加状态判断画面读取失败时直接退出循环防止程序报错崩溃。2人脸提取调用 detectMultiScale 方法进行多尺度人脸检测scaleFactor 控制图像缩放比例适配远近不同的人脸minNeighbors 过滤误检区域minSize 筛选有效人脸尺寸。该方法会返回画面中所有人脸的坐标和宽高数据。3微笑检测与标记在截取的人脸局部区域中进行微笑检测相比于人脸检测微笑检测的参数更严格有效过滤微小干扰。由于微笑检测的坐标是人脸局部相对坐标需要叠加人脸全局坐标完成坐标换算最后用蓝色框标记微笑区域同时在画面打印 smile 文字直观提示检测成功。