资源简介
1、本资源核心为.cpp源代码,利用OpenCV实现人脸及眼睛鼻子嘴巴等五官的检测与识别。2、压缩包内包含训练好的人脸等数据,存放在xml文件夹中。3、该项目可以识别检测出人脸和五官的大小及位置信息,并一并输出,内附Lena图及明星图识别范例。
代码片段和文件信息
#include
#include
#include
using namespace std;
using namespace cv;
int main(){
Mat image image_gray;
image = imread(“J:\\images\\lena.bmp“);
cvtColor(image image_gray CV_BGR2GRAY);//转为灰度图
equalizeHist(image_gray image_gray);//直方图均衡化,增加对比度方便处理
CascadeClassifier face_Classifier;//载入face分类器
if (!face_Classifier.load(“J:\\xml\\haarcascade_frontalface_alt2.xml“)){//读入训练好的人脸数据
cout << “Load haarcascade_frontalface_default.xml failed!“ << endl;
return 0;
}
vector faceRect;
//nose_Classifier.detectMultiScale(image_gray noseRect 1.1 30 0 | CV_HAAR_SCALE_IMAGE Size(30 30));
face_Classifier.detectMultiScale(image_gray faceRect 1.1 3 0 | CV_HAAR_SCALE_IMAGE Size(30 30)); // 分类器对象调用
cout << “检测到的人脸个数为: “ << faceRect.size() << “\n“ << endl;
// 标记--在脸部画圆
for (size_t faceIdx = 0; faceIdx < faceRect.size(); faceIdx++){//画出检测到的位置
//rectangle(image faceRect[faceIdx] Scalar(255 255 0));
cout << “人脸窗口的大小: “ << faceRect[faceIdx] << “\n“ << endl;
//将矩形框转化为圆形框。
Point center;
int radius;
center.x = cvRound(faceRect[0].x+faceRect[0].width*0.5);
center.y = cvRound(faceRect[0].y + faceRect[0].height*0.5);
radius = cvRound((faceRect[0].width +faceRect[0].height) * 0.25);
circle(image center radius Scalar(0 255 255) 2 8 0);//画出圆形人脸,黄色。
}
CascadeClassifier eye_Classifier;//载入eyes分类器
if (!eye_Classifier.load(“J:\\xml\\haarcascade_eye.xml“)){
cout << “Load haarcascade_mcs_eye.xml failed!“ << endl;
return 0;
}
vector eyeRect;
eye_Classifier.detectMultiScale(image_gray eyeRect 1.1 20 0 | CV_HAAR_SCALE_IMAGE Size(30 30));//检测
for (size_t eyeIdx = 0; eyeIdx < eyeRect.size(); eyeIdx++){//画出检测到的位置
rectangle(image eyeRect[eyeIdx] Scalar(0 255 0));//绿色
cout << “眼睛窗口的大小: “ << eyeRect[eyeIdx]<<“\n“<< endl;
}
CascadeClassifier nose_Classifier;//载入nose分类器
if (!nose_Classifier.load(“J:\\xml\\haarcascade_mcs_nose.xml“)){
cout << “Load haarcascade_mcs_nose.xml failed!“ << endl;
return 0;
}
vector noseRect;
nose_Classifier.detectMultiScale(image_gray noseRect 1.1 30 0 | CV_HAAR_SCALE_IMAGE Size(30 30));//检测
for (size_t noseIdx = 0; noseIdx < noseRect.size(); noseIdx++){//画出检测到的位置
rectangle(image noseRect[noseIdx] Scalar(240 32 160));//紫色
noseRect[noseIdx].size();
cout << “鼻子窗口的大小: “ << noseRect[noseIdx] << “\n“ << endl;
}
CascadeClassifier mouth_Classifier;//载入mouth分类器
if (!mouth_Classifier.load(“J:\\xml\\haarcascade_mcs_mouth.xml“)){
cout << “Load haarcascade_mcs_mouth.xml!“ << endl;
return 0;
}
vector mouthRect;
mouth_Classifier.detectMultiScale(image_gray mouthRect 1.3 50 0 | CV_HAAR_SCALE_IMAGE Size(10 10));//检测
for (size_t mouthIdx = 0; mouthIdx < mouthRect.size(); mouthIdx++){//画出检测到的位置
rectangle(image mouthRect[mouthIdx] Scalar(255 255 0));//青色
cout << “嘴巴窗口的大小: “ << eyeRect[mouthIdx]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 854293 2017-12-19 09:49 lena人脸及五官识别范例.png
文件 3447 2017-12-19 09:51 face_eyes_nose_mouth_detect.cpp
文件 341406 2015-01-25 14:31 xm
文件 601661 2015-01-25 14:31 xm
文件 540616 2015-01-25 14:31 xm
文件 930127 2017-12-15 19:30 xm
文件 358385 2017-12-15 19:30 xm
文件 719806 2017-12-15 19:30 xm
文件 1585210 2017-12-15 19:30 xm
文件 331875 2017-12-19 09:48 明星例子.png
目录 0 2017-12-19 09:51 xm
----------- --------- ---------- ----- ----
6266826 11
- 上一篇:截图软件snap
- 下一篇:关于风景介绍的web网页 网页设计课程,简单
相关资源
- OpenCv相似度比较
- 手写识别的opencv代码
- dlib-19.4.0-cp35.whl Windows64位 不用boos
- 棋盘格生成小工具
-
opencv haar检测训练成功xm
l - opencv实现的手势识别,石头剪刀布的
- 基于opencv的手势识别程序,亲测可用
- 人脸识别系统设计-毕业设计
- 相机标定完整工程vs
- 基于opencv的绊线检测代码
- OPENCV人眼检测
-
haarcascades人脸特征分类器xm
l文件 - opencv实现只有xy方向平移的图像拼接算
- Qt+Opencv-PCA人脸识别+视频
- 答题卡识别小程序
- 关于人脸识别的9篇论文
- Opencv2.1 的dll和lib文件 win系统的
- HDR_Code_Image.rar for opencv
- opencv毕业设计
- opencv3.4.1+opencv_contrib经vs2015编译后生成
- 基于PCA的人脸识别
- opencv交叉编译过程中boostdesc_bgm.i等一
- opencv网络摄像头功能和文件传输功能
- opencv410编译好的32位库
- OpenCV文字区域定位
- 利用PCL,OpenCV求取点云的体积
- 基于稀疏表示的人脸识别文章及对应
- opencv按像素切割图片并按照类别编号
- opencv三角测量一种代码实现
- 一套 MIT 的人脸训练样本库
评论
共有 条评论