资源简介
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的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- LDA 人脸识别
- opencv环境配置
- halcon简单实现人脸识别.hdev
- win10 64位下编译的opencv4.5.5库,opencv
- 人脸识别开源SDK源码
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- 百度人脸识别Demo
- delphi百度人脸识别离线SDK demo
- 讯飞人脸识别eclipse版
- Delphi7调用虹软人脸识别的测试
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- [b115]FPGA上运行人脸识别源代码.zip
- shape_predictor_68_face_landmarks.dat.bz2 68个标
- 用两个摄像头实现,双目标定,双目
- labview人脸识别283682
- 一种基于LBP和CNN的人脸识别算法
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于CAFFE的人脸识别系统
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
评论
共有 条评论