级联分类器人脸检测
2016-11-18 22:14
246 查看
#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
CascadeClassifier face_cascade, eyes_cascade;
String window_name = "Face Detection";
void detectFaces(Mat frame) {
std::vector<Rect> faces;
Mat frame_gray;
// 灰度变换
cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
// 直方图均衡
equalizeHist(frame_gray, frame_gray);
// 多尺度人脸检测
face_cascade.detectMultiScale(frame_gray, faces,
1.1, 3,0|CASCADE_SCALE_IMAGE, Size(30, 30));
// 人脸检测结果判定
for(size_t i = 0; i < faces.size(); i++)
{
// 检测到人脸中心
Point center(faces[i].x + faces[i].width/2,
faces[i].y + faces[i].height/2);
Mat face = frame_gray(faces[i]);
std::vector<Rect> eyes;
// 在人脸区域检测人眼
eyes_cascade.detectMultiScale(face, eyes, 1.1, 2,
0 |CASCADE_SCALE_IMAGE, Size(30, 30) );
if(eyes.size() > 0)
// 绘制人脸
ellipse(frame, center, Size(faces[i].width/2,
faces[i].height/2),
0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
}
imshow( window_name, frame );
}
int main()
{
// 摄像头读取
VideoCapture cap(0);
Mat frame;
// 初始化haar级联人脸分类器XML
face_cascade.load("haarcascade_frontalface_alt.xml");
// 初始化haar级联人眼分类器XML
eyes_cascade.load("haarcascade_eye_tree_eyeglasses.xml");
if (face_cascade.empty() || eye_cascade.empty()
|| !cap.isOpened())
return 1;
while(cap.read(frame))
{
// 人脸检测
detectFaces(frame);
if( waitKey(30) >= 0)
break;
}
return 0;
}
转载:http://blog.csdn.net/zhuwei1988
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
CascadeClassifier face_cascade, eyes_cascade;
String window_name = "Face Detection";
void detectFaces(Mat frame) {
std::vector<Rect> faces;
Mat frame_gray;
// 灰度变换
cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
// 直方图均衡
equalizeHist(frame_gray, frame_gray);
// 多尺度人脸检测
face_cascade.detectMultiScale(frame_gray, faces,
1.1, 3,0|CASCADE_SCALE_IMAGE, Size(30, 30));
// 人脸检测结果判定
for(size_t i = 0; i < faces.size(); i++)
{
// 检测到人脸中心
Point center(faces[i].x + faces[i].width/2,
faces[i].y + faces[i].height/2);
Mat face = frame_gray(faces[i]);
std::vector<Rect> eyes;
// 在人脸区域检测人眼
eyes_cascade.detectMultiScale(face, eyes, 1.1, 2,
0 |CASCADE_SCALE_IMAGE, Size(30, 30) );
if(eyes.size() > 0)
// 绘制人脸
ellipse(frame, center, Size(faces[i].width/2,
faces[i].height/2),
0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );
}
imshow( window_name, frame );
}
int main()
{
// 摄像头读取
VideoCapture cap(0);
Mat frame;
// 初始化haar级联人脸分类器XML
face_cascade.load("haarcascade_frontalface_alt.xml");
// 初始化haar级联人眼分类器XML
eyes_cascade.load("haarcascade_eye_tree_eyeglasses.xml");
if (face_cascade.empty() || eye_cascade.empty()
|| !cap.isOpened())
return 1;
while(cap.read(frame))
{
// 人脸检测
detectFaces(frame);
if( waitKey(30) >= 0)
break;
}
return 0;
}
转载:http://blog.csdn.net/zhuwei1988
相关文章推荐
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 【人脸检测】OpenCV中的Haar+Adaboost级联分类器分解(三):级联分类器结构与XML文件含义
- 怎样让机器学会检测人脸——6、级联分类器
- OpenCV学习笔记:人脸检测(级联分类器)
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 程序员的机器学习入门笔记(九):人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- [转] 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- Learning opencv中的一个基于级联的Hear分类器的人脸检测
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联
- 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联