Windows环境利用 OpenCV 中 CascadeClassifier 分类器识别人眼 c++
Windows环境中配置OpenCV
- 关于在Windows环境中配置opencv的说明,具体可以参考:VS2022 配置OpenCV开发环境详细教程。
CascadeClassifier 分类器
CascadeClassifier 是 OpenCV 库中的一个类,它用于实现一种快速的物体检测算法,称为级联分类器。这种分类器通常用于面部识别、行人检测等任务。级联分类器由多个阶段组成,每个阶段都包含一组分类器,通常是基于Haar 特征或 HOG 特征的简单分类器。这些分类器被训练来识别物体的不同特征。
- 级联分类器的工作原理如下:
- 初始化阶段:使用一个较大的窗口在图像中滑动,寻找可能包含目标物体的区域。
- 分类器级联:每个阶段的分类器都会对候选区域进行分类,如果候选区域通过当前阶段的分类器,它将被传递到下一个阶段的分类器。如果候选区域被拒绝,它将被排除。
- 多尺度检测:在不同的缩放级别上重复这个过程,以检测不同大小的目标物体。
- 非极大值抑制:在所有阶段完成后,可能会有多个重叠的候选区域被检测到。非极大值抑制用于选择最佳的候选区域。
- 使用CascadeClassifier 的基本步骤包括:
- 加载一个预先训练好的分类器模型,这通常是一个 .xml 文件。
- 使用分类器检测图像中的物体。
- 根据需要调整参数,比如窗口大小、缩放因子等。
利用CascadeClassifier 人眼识别
- 验证VS2022是否配置好OpenCV环境
读入一张本地图片,并显示,如下:
#include <opencv2/opencv.hpp>
int main()
{Mat img = imread("amy.png");namedWindow("美女");imshow("美女", img);waitKey(0);return 0;
}
运行结果如下,显示出图片,则表示VS2022已经配置OpenCV环境。

2. 进行图片的人眼识别过程
imread函数读入一张本地图片;- 加载人眼识别分类器
CascadeClassifier中人眼模型haarcascade_eye.xml,该分类器一般在OpenCV安装目录opencv//build//etc//haarcascades下;- 利用分类器
CascadeClassifier中detectMultiScale函数识别人眼;rectangle函数绘制检测到的人眼,标注矩形框,并打印坐标;imshow函数显示识别结果。
- 人脸识别c++ demo
#include <opencv2/opencv.hpp>
#include <string>using namespace cv;
using namespace std;int main(int argc, char** argv) {// 读取图像文件Mat image = imread("amy.png");if (image.empty()) {cout << "读取图像文件失败" << endl;return -1;}// 加载人眼识别分类器CascadeClassifier eyeCascade;string eyeCascadePath = "C://opencv//build//etc//haarcascades//haarcascade_eye.xml";if (!eyeCascade.load(eyeCascadePath)) {cout << "加载人眼识别分类器失败" << endl;return -1;}// 识别人眼std::vector<Rect> eyes;eyeCascade.detectMultiScale(image, eyes, 1.1, 3, 0, Size(80, 80));// 绘制检测到的人眼for (const Rect& eye : eyes) {rectangle(image, eye, Scalar(255, 0, 0), 2);// 打印人眼的坐标cout << "检测到人眼: 坐标 (" << eye.x << ", " << eye.y<< ") 尺寸 (" << eye.width << "x" << eye.height << ")" << endl;}// 显示结果图像imshow("人眼识别结果", image);waitKey(0);return 0;
}
- 识别结果:如下图,可以看到可以准确的识别出单张人脸照上的人眼位置,具体坐标如下:
检测到人眼: 坐标 (475, 328) 尺寸 (115x115)
检测到人眼: 坐标 (318, 335) 尺寸 (106x106)
相关文章:
Windows环境利用 OpenCV 中 CascadeClassifier 分类器识别人眼 c++
Windows环境中配置OpenCV 关于在Windows环境中配置opencv的说明,具体可以参考:VS2022 配置OpenCV开发环境详细教程。 CascadeClassifier 分类器 CascadeClassifier 是 OpenCV 库中的一个类,它用于实现一种快速的物体检测算法,称…...
Golang | Leetcode Golang题解之第167题两数之和II-输入有序数组
题目: 题解: func twoSum(numbers []int, target int) []int {low, high : 0, len(numbers) - 1for low < high {sum : numbers[low] numbers[high]if sum target {return []int{low 1, high 1}} else if sum < target {low} else {high--}}r…...
【软件工程】【23.04】p2
关键字: 计算机软件定义、需求基本性质、创建系统类图所涉及的工作、RUP创建系统用况模型活动、软件生存周期模型、能力等级和成熟度等级区别联系; 模块结构图:深度宽度、扇入扇出、作用域、控制域; 程序流程图:语句…...
Java多线程编程与并发控制策略
Java多线程编程与并发控制策略 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我想和大家分享一下Java多线程编程与并发控制策略的相关知识&am…...
Java爬虫(一)
一、Java爬虫简介 1.1 Selenium Selenium爬虫是一种基于浏览器自动化的爬虫技术,可以模拟用户的操作行为,实现对动态网页的爬取。 1.2 jsoup Jsoup拥有十分方便的api来处理html文档,比如参考了DOM对象的文档遍历方法,参考了CSS选…...
element-plus form表单组件之el-date-picker日期选择器组件
el-date-picker日期选择器组件可根据年,月,日期,时间范围来进行选择,可以自定义日期格式,和样式,还提供多种内置事件。 主要属性如下 属性名说明类型可选值默认值model-value / v-model绑定值,…...
如何与情绪好好相处,真正成为情绪的主人
一、教程描述 若要成为一个聪明的人,就要学会做情绪的主人,而不是被情绪控制自己,为什么要做情绪的主人?至少有以下两个方面原因。 其一,都说,世上还是好人多。可是,为什么你身边没有一个好人…...
RK3588/算能/Nvidia智能盒子:[AI智慧油站」,以安全为基,赋能精准经营
2021年9月,山东省应急管理厅印发了关于《全省危险化学品安全生产信息化建设与应用工作方案(2021-2022 年)》的通知,要求全省范围内加快推进危险化学品安全生产信息化、智能化建设与应用工作,建设完善全省危险化学品安全…...
【眼在手外D435相机支架】
完整UR机械臂的GRCNN抓取网络教程参考以下博客: 【眼在手外D435相机支架】 0. 【机械臂视觉抓取从理论到实战】 GRCNN抓取网络学习1【Jacquard数据集等效制作】GRCNN抓取网络学习2【自制Jacquard数据集训练】GRCNN抓取网络学习3【自制Jacquard数据集模型调优】GRCNN抓取网络学…...
js组合继承
JS组合继承(combination inheritance)是一种常用的继承模式,它通过将原型链和构造函数组合使用来实现继承。 下面是JS组合继承的详细解析和代码示例: 创建父类(基类)的构造函数 function Parent(name) {…...
Spring-kafka消费者消费的一些问题
前言 Spring Kafka 无缝集成了 Spring Boot、Spring Framework 及其生态系统中的其他项目,如 Spring Cloud。通过与 Spring Boot 的自动配置结合,开发者可以快速启动和配置 Kafka 相关的功能。无需编写大量样板代码即可实现 Kafka 的生产和消费功能&…...
【自我提升】提升能量书籍
《原子习惯》 (Atomic Habits) - 詹姆斯克利尔 (James Clear): 核心思想:微小的习惯改变可以带来显著的生活变化。方法: 将大目标拆分为可管理的小习惯。使用“习惯堆叠”技术,将新习惯与已有习惯结合。创建支持性环境,…...
python图像处理库-PIL(Pillow)
PIL库全称为Python Imaging Library,即Python图像处理库,是一个在Python中用于处理图像的非常流行的库。 一、PIL介绍 这个库提供了广泛的文件格式支持、高效的内部表示以及相当强大的图像处理功能。 核心图像库旨在快速访问存储在几种基本像素格式中的数…...
【2024】kafka streams的详细使用与案例练习(2)
目录 前言使用1、整体结构1.1、序列化 2、 Kafka Streams 常用的 API2.1、 StreamsBuilder2.2、 KStream 和 KTable2.3、 filter和 filterNot2.4、 map 和 mapValues2.5、 flatMap 和 flatMapValues2.6、 groupByKey 和 groupBy2.7、 count、reduce 和 aggregate2.8、 join 和 …...
qt 简单实验 读取json格式的配置文件
1.概要 2.代码 //#include "mainwindow.h"#include <QApplication> #include <QFile> #include <QJsonDocument> #include <QJsonObject> #include <QDebug> //读取json数据的配置文件QJsonObject readJsonConfigFile(const QString …...
Docker常用命令与实战示例
docker 1. 安装2. 常用命令3. 存储4. 网络5. redis主从复制示例6. wordpress示例7. DockerFile8. 一键安装超多中间件(compose) 1. 安装 以centOS系统为例 # 移除旧版本docker sudo yum remove docker \docker-client \docker-client-latest \docker-c…...
数据结构(基础知识)
基础概念: 数据:数据是信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合 数据元素:是数据的基本单位,在程序中常作为一个整体来考虑 数据对象&#…...
计算机网络:网络层 - 路由选择协议
计算机网络:网络层 - 路由选择协议 路由器的结构路由选择协议概述自治系统 AS内部网关协议路由信息协议 RIP距离向量算法RIP报文格式收敛问题 开放最短路径优先 OSPF基本工作原理自治系统分区 外部网关协议BGP-4 路由器的结构 如图所示,路由器被分为路由…...
JupyterLab使用指南(六):JupyterLab的 Widget 控件
1. 什么是 Widget 控件 JupyterLab 中的 Widget 控件是一种交互式的小部件,可以用于创建动态的、响应用户输入的界面。通过使用 ipywidgets 库,用户可以在 Jupyter notebook 中创建滑块、按钮、文本框、选择器等控件,从而实现数据的交互式展…...
OpenCV 特征点检测与匹配
一 OpenCV特征场景 ①图像搜索,如以图搜图; ②拼图游戏; ③图像拼接,将两长有关联得图拼接到一起; 1 拼图方法 寻找特征 特征是唯一的 可追踪的 能比较的 二 角点 在特征中最重要的是角点 灰度剃度的最大值对应的…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

