摘要:实现图像中人脸检测,和人眼定位。输出检测标记图像和定位坐标。

工具:vs2015 opencv3  C++

资源:haarcascade_frontalface_alt2.xml;haarcascade_eye_tree_eyeglasses.xml

链接:https://pan.baidu.com/s/1uk8P1TF7XXCoMMd0sNDGVg
提取码:az01

实现结果:

实现过程:

Detect.h

 #pragma once
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#ifndef DETECT_H
#define DETECT_H
int DetectFaceEyes(); //检测人脸定位人眼
#endif // !DETECT_H

Detect.cpp

#include <iostream>
#include "Detect.h" using namespace std;
using namespace cv; int DetectFaceEyes()
{
Mat heying = imread("./Data/heying.jpg");
Mat hyGray = imread("./Data/heying.jpg", );
equalizeHist(hyGray, hyGray); //直方图均匀化 vector<Rect> faces, eyes;
const char *faceCascadeFilename = "./Data/haarcascade_frontalface_alt2.xml";
const char *eyeCascadeFilename = "./Data/haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier faceCascade;
CascadeClassifier eyeCascade;
if (!faceCascade.load(faceCascadeFilename))
{
cout << "人脸检测级联分类器没找到!!" << endl;
return -;
}
if (!eyeCascade.load(eyeCascadeFilename))
{
cout << "眼睛检测级联分类器没找到!!" << endl;
return -;
}
faceCascade.detectMultiScale(hyGray, faces, 1.2, , , Size(, ));
for (auto b : faces)
{
cout << "输出人脸位置:(x,y):" << "(" << b.x << "," << b.y << "),\
(width,heigh):(" << b.width << "," << b.height << ")\n";
}
if (faces.size() > )
{
for (size_t i = ; i < faces.size(); i++)
{
// putText(heying,"xxx", cvPoint(faces[i].x, faces[i].y - 10), FONT_HERSHEY_PLAIN, 2.0, Scalar(0, 0, 255));
rectangle(heying, Point(faces[i].x, faces[i].y), Point(faces[i].x + faces[i].width, faces[i].y + faces[i].height), Scalar(, , ), , );
cout << faces[i] << endl; Mat face_ = hyGray(faces[i]); // 选定人脸的基础上定位眼睛
eyeCascade.detectMultiScale(face_, eyes, 1.2, , , Size(, ));
for (size_t j = ; j < eyes.size(); j++)
{
// 在原图上标注眼睛,需要人脸在原图上的坐标
Point eyeCenter(faces[i].x + eyes[j].x + eyes[j].width / , faces[i].y + eyes[j].y + eyes[j].height / );
int radius = cvRound((eyes[j].width + eyes[j].height)*0.25);
circle(heying, eyeCenter, radius, Scalar(, , ), , , );
}
}
}
imshow("result", heying);
waitKey();
return ;
}

测试:Main.cpp

#include <iostream>
#include <opencv2\opencv.hpp>
#include "Detect.h" using namespace cv; int main()
{
int isFaceDetect; // 测试图片中的人脸
isFaceDetect = DetectFaceEyes();
return ;
}

图像人脸检测+人眼检测 (opencv + c++)的更多相关文章

  1. python3+openCV实现图片的人脸人眼检测,原理+参数+源代码

    上学时候用matlab学过一些图像处理的基础知识,当时课程作业是用haar实现人脸检测 but当时是心思根本不在图像处理上,so找了个同学帮忙做的,自己没上心 然鹅天道好轮回,现在捡起来了原来的算法一 ...

  2. opencv实现人脸,人眼,微笑检测

    1.首先实现人脸检测 import cv2 img = cv2.imread("people.jpg",1) #读入图像 #导入人脸级联分类器引擎,“.xml”文件里包含了训练出来 ...

  3. 一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码

    计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...

  4. 人脸检测学习笔记(数据集-DLIB人脸检测原理-DLIB&OpenCV人脸检测方法及对比)

    1.Easily Create High Quality Object Detectors with Deep Learning 2016/10/11 http://blog.dlib.net/201 ...

  5. 人脸识别中的检测(在Opencv中加入了QT)

    #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include & ...

  6. 【图像处理】使用OpenCV实现人脸和行人检测

      OpenCV全称是Open source Computer Vision Library(开放源代码计算机视觉库),是一个用于图像处理.分析.机器视觉方面的开源函数库,提供了很多图像处理的工具和可 ...

  7. matlab工具箱之人眼检测+meanshift跟踪算法--人眼跟踪

    Viola-Jones 人眼检测算法+meanshift跟踪算法 这次的代码是对视频中的人眼部分进行检测加跟踪,检测用的是matlab自带的人眼检测工具箱 下面是matlab官网介绍这个算法的一些东西 ...

  8. 基于opencv3.0下的人脸检测和检测部分的高斯模糊处理

    如题 这里将任务分解为三大部分: 1.录播放视频 2.人脸检测 3.部分高斯模糊 其中重点放在人脸检测和部分高斯模糊上 1.录播放视频(以opencv中的VideoCapture类进行实现) 首先罗列 ...

  9. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

随机推荐

  1. 使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和gdb调试(一台电脑有桌面系统,一台电脑无桌面系统)

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/libaineu2004/article/details/62423830 尊重作者,支持原创,如 ...

  2. cross socket和msgpack的数据序列和还原

    cross socket和msgpack的数据序列和还原 procedure TForm1.Button1Click(Sender: TObject); begin var pack: TSimple ...

  3. TynSerial基本数据类型序列(还原)

    TynSerial基本数据类型序列(还原) procedure TForm1.ToolButton17Click(Sender: TObject); var serial: TynSerial; be ...

  4. [Java]某日期时间加上若干分钟得到新的日期时间

    使用Java自带类库实现日期时间增减还是比自己人工拆分编写要牢靠,代码也简洁多了. 下面代码实现了在原有日期时间上加上一些分钟得到新的日期时间的功能,稍加改造还可以实现逆向运算. 代码: packag ...

  5. 【Python】分析自己的博客 https://www.cnblogs.com/xiandedanteng/p/?page=XX,看每个月发帖量是多少

    要执行下面程序,需要安装Beautiful Soup和requests,具体安装方法请见:https://www.cnblogs.com/xiandedanteng/p/8668492.html # ...

  6. 用vscode编辑代码

    本教程只适用于用vs code编辑代码,并不是用vs code调试,调试还是老实用keil吧,干货开始.... 废话不多说 第一步:去微软下载一个vs code,顺带百度了解一下vs code强大的功 ...

  7. Hortonworks,快速上手 Hadoop 的套件

    最近我在思考的一件事情:如何帮助团队 SQL 开发快速掌握大数据相关技术呢?面对疯狂暴涨的数据,SQL Server 存储成本越来越高了,日志的增长量也极大超过预期,隔三差五总有空间不足导致的应用异常 ...

  8. CDH 安装的博客地址记录

    1. 集群环境配置 https://www.cnblogs.com/yinzhengjie/articles/11019333.html 2. 二进制方法安装 https://www.cnblogs. ...

  9. 【转载】微信小程序-开发入门(一)

    微信小程序已经火了一段时间了,之前一直也在关注,就这半年的发展来看,相对原生APP大部分公司还是不愿意将主营业务放到微信平台上,以免受制于腾讯,不过就小程序的应用场景(用完即走和二维码分发等)还是很值 ...

  10. 016-mac下ps

    参看 http://www.ddooo.com/softdown/65448.htm#dltab 1.下载 安装运行:断网后,双击Photoshop CS6.dmg进入安装界面 2.安装提示:安装程序 ...