【OpenCV】检测人脸、眼睛、鼻子、耳朵、嘴

Opencv中有训练好的Haar特征分类器(.xml文件),位于“/opencv-2.4.11/data/haarcascades/”文件夹中,调用起来非常简单。

举个例子,我们想检测图片中的眼睛,就可以使用“haarcascade_eye.xml”这个分类器来做检测,代码如下:

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/calib3d/calib3d.hpp>
using namespace std;
using namespace cv;

int main(){
    Mat image,image_gray;
    image = imread("lena.jpeg");
    cvtColor(image,image_gray,CV_BGR2GRAY );//转为灰度图
    equalizeHist(image_gray,image_gray);//直方图均衡化,增加对比度方便处理
    CascadeClassifier eye_Classifier;//载入分类器
    if(!eye_Classifier.load("haar/haarcascade_eye.xml")){
        cout<<"Load haarcascade_mcs_eye.xml failed!"<<endl;
        return 0;
    }
    vector<Rect> eyeRect;
    eye_Classifier.detectMultiScale( image_gray, eyeRect, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );//检测
    for (size_t eyeIdx = 0;eyeIdx < eyeRect.size();eyeIdx++){//画出检测到的位置
        rectangle(image,eyeRect[eyeIdx],Scalar(0,0,255));
    }
    namedWindow("lena",0);
    imshow("lena",image);
    waitKey(0);
    return 0;
}

检测结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/cfan927/article/details/72585587
今日推荐