C++ OpenCV【人脸识别人眼识别】
此文章仅对人脸位置进行检测,使用haar级联的方法[OpenCV自带]
#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>
#include <cstdio>
using namespace std;
using namespace cv;//定义7种颜色,用于标记人脸
Scalar colors[] =
{//红橙黄绿青蓝紫【RGB】CV_RGB(255, 0, 0),CV_RGB(255, 97, 0),CV_RGB(255, 255, 0),CV_RGB(0, 255, 0),CV_RGB(0, 255, 255),CV_RGB(0, 0, 255),CV_RGB(160, 32, 240)
};int main()
{//读取训练器 haarCascadeClassifier classifier_face;string haarfileFace = "D:\\Library\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_alt.xml";//【[opencv安装地址]\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_alt.xml】CascadeClassifier classifier_eye;string haarfileEye = "D:\\Library\\opencv\\build\\etc\\haarcascades\\haarcascade_eye.xml";if (!classifier_face.load(haarfileFace))//加载文件{cout << "coulud not load face image..." << endl;return -1;}if (!classifier_eye.load(haarfileEye)){cout << "coulud not load eye image..." << endl;return -1;}Mat srcImage, grayImage, grayImage1, dstImage;srcImage = imread("rg.png");//读取图片/*imshow("原图", srcImage);waitKey(0);*/dstImage = srcImage.clone();//复制一张图片cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);//生成灰度图 提高检测效率//检测人脸vector<Rect> faceRect;classifier_face.detectMultiScale(grayImage, faceRect, 1.1, 3, 0);//调用分类器对象cout << "检测到人脸个数:" << faceRect.size() << endl;if (faceRect.size()){for (int i = 0; i < faceRect.size(); i++){cv::rectangle(dstImage, faceRect[i], Scalar(0, 0, 255), 2);//标记--在脸部画矩形//Point center;//int radius;//center.x = cvRound((faceRect[i].x + faceRect[i].width * 0.5));//center.y = cvRound((faceRect[i].y + faceRect[i].height * 0.5));//radius = cvRound((faceRect[i].width + faceRect[i].height) * 0.25);//circle(dstImage, center, radius, colors[i % 7], 3);//标记--在脸部画圆(画矩形和画圆二选一)//在人脸图像中检测人眼和嘴巴Mat faceimg = dstImage(faceRect[i]);//获取人脸矩形图像/*imshow("faceimg", faceimg);waitKey(0);*/cvtColor(faceimg, grayImage1, COLOR_BGR2GRAY);//检测眼睛和嘴巴vector<Rect> eyeRect;classifier_eye.detectMultiScale(grayImage1, eyeRect, 1.1, 3, 0);if (eyeRect.size()){for (int j = 0; j < eyeRect.size(); j++){标记--在眼部画矩形//Rect tmpRect;//tmpRect.x = faceRect[i].x + eyeRect[j].x;//tmpRect.y = faceRect[i].y + eyeRect[j].y;//tmpRect.width = eyeRect[j].width;//tmpRect.height = eyeRect[j].height;//cv::rectangle(dstImage, tmpRect, Scalar(255, 0, 0));//标记--在眼部画圆(画矩形和画圆二选一)Point centerEye;int radiusEye;centerEye.x = cvRound((faceRect[i].x + eyeRect[j].x + eyeRect[j].width * 0.5));centerEye.y = cvRound((faceRect[i].y + eyeRect[j].y + eyeRect[j].height * 0.5));radiusEye = cvRound((eyeRect[j].width + eyeRect[j].height) * 0.25);circle(dstImage, centerEye, radiusEye, colors[i % 7], 2);}}}}imwrite("rgDetect.png", dstImage);//显示最终检测结果imshow("【人脸识别detectMultiScale】", dstImage);waitKey(0);system("pause");return 0;
}
找茬:火箭少女少了一人
Haar级联预训练模型
C++ OpenCV【人脸识别人眼识别】相关推荐
- Qt之OpenCV人脸检测以及识别
简介 最近做了一个人脸检测以及识别的程序,很多的文章都有比较详细的叙述,可以自行查找.但是个人觉得大部分文章都太细致了以至于初学者无法快速领会主干(不是否认质量),是侧重点问题.所以结合我遇到了一些问 ...
- 人脸识别案例:【实战】opencv人脸检测+Haar特征分类器
1 基础 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器.我们需要从其中提取特征.下图中的 Haar 特征会被使用,就像我们的卷积核 ...
- openCV人脸识别简单案例
1 基础 我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器.我们需要从其中提取特征.下图中的 Haar 特征会被使用,就像我们的卷积核 ...
- 人眼定位python代码_使用dlib,OpenCV和Python进行人脸识别—人眼眨眼检测
前期文章我们分享了如何使用python与dlib来进行人脸识别,以及来进行人脸部分的识别, 如下图,dlib人脸数据把人脸分成了68个数据点,从图片可以看出,人脸识别主要是识别:人眉,人眼,人鼻,人嘴 ...
- OpenCV-Python:实现人脸、人眼、嘴巴识别
本文转自:https://www.cnblogs.com/fightccc/p/8616068.html [OpenCV-Python:实现人脸.人眼.嘴巴识别]实战(一) AI时代的到来,手机上的A ...
- python人脸照片分类_Python OpenCV 人脸识别(一)
前面介绍了Numpy模块,下面再介绍一个OpenCV模块,就基于这两个库看一下当下很火的人工智能是如何实现的,我们介绍几个:人脸识别(当下非常火的).音视频操作等等.今天先介绍一下静态图片的人脸识别, ...
- Python+opencv 人脸识别
python+opencv人脸检测+识别示例及原理解析 一.开发环境搭建 二.图片人脸检测 2.1 文件准备与编程 2.2 注意事项 三.视频人脸识别 3.1文件准备与编程 3.2 注意事项 四.人脸 ...
- 人脸识别系统——OpenCV人脸检测
EduCoder:人脸识别系统--OpenCV人脸检测 第1关:图片基本操作 编程要求: 请在右侧编辑器中的BEGIN-END之间编写代码,完成如下要求: 导入openCV库(cv2): 读取路径 s ...
- 头歌--人脸识别系统--OpenCV人脸检测
目录 第1关:图片基本操作 第2关:色彩空间及其转换 第3关:基于Harr特征的人脸检测分类器 第4关:绘制人脸与人眼区域 第1关:图片基本操作 '''****************BEGIN*** ...
最新文章
- 转:测试部工作不受重视怎么办?
- stm32c8t6的can通信实验代码_TCP的连接建立与关闭状态及数据传输通信过程【含有 PHP socket API 测试实验代码】...
- spring中Constructor、@Autowired、@PostConstruct的顺序
- MySQL 慢查询优化
- ASP.NET Core 2.1 使用Docker运行
- 第2章 数据认知与预处理
- expsky.php,Typecho漏洞利用工具首发,半分钟完成渗透
- platform平台总线
- 判断字段是否与枚举相同_Scala基础学习九之枚举和Trait了解
- jquery-滚轮事件与函数节流-案例整屏滚动 -等待整理
- 从 SAS 到 NVMe,换个底盘就完儿事了?
- python化学公式_(CSP)201912-3化学方程式-python实现
- MATLAB关于Mesh的相关命令
- paip.验证码识别---初始化
- 小学生信息奥赛学c语言,适合小学生的信息学奥赛(NOIP)课程来袭!
- python之随机生成一个手机号码
- win7计算机闪屏,win7电脑闪屏是什么原因
- MATLAB快速搭建一个神经网络以及神经网络工具箱的使用
- starbound服务器文件,starbound星界边境开新档并从老存档转移物资的方法_快吧单机游戏...
- NGFW module恢复密码操作方法
热门文章
- 时间序列-预测:概述【Time Series Forecasting (TSF) 】【时间序列既可以做回归任务,也可以做分类任务】【预测是回归问题,不是分类问题】
- 云渲染那个好?云渲染测评终极章。市面上在的都在了!
- 如何向Google提交网站?(转)
- 微型计算机接口与技术期末,北邮《微机原理与接口技术》期末复习题(含答案).doc...
- rk3568 修改开机动画
- OUC软件开发实验1
- JS导出Word细节设置
- 教你秒建受信任的本地 SSL 证书,彻底解决开发测试环境的无效证书警告烦恼!...
- Qt、X11、Qt/Embedded、Qt-X11
- C# 实现刻录光盘功能