码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV——人脸检测

时间:2016-10-26 11:18:38      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:利用   读取   rect   line   res   color   blog   style   cto   

OpenCV支持的目标检测的方法: 利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification)

1.加载级联分类器

CascadeClassifier cascade;
cascade.load("haarcascade_frontalface_alt2.xml");

2.打开视频

VideoCapture capture(0);
if (!capture.isOpened()){
        return -1;
    }

3.对每一帧图像进行检测并标出人脸

while (true){
        Mat Image, grayImage;
        capture >> Image;                                //读取当前帧

        //缩小图片加快检测速度
        Mat smallImg(cvRound(Image.rows / 2.0), cvRound(Image.cols / 2.0), CV_8UC1);

        //处理图像
        grayImage.create(Image.size(), Image.type());
        cvtColor(Image, grayImage, CV_BGR2GRAY);
        resize(grayImage, smallImg, smallImg.size(), 0, 0, INTER_LINEAR);
        equalizeHist(smallImg, smallImg);

        vector<Rect> rect;
        cascade.detectMultiScale(smallImg, rect);

        for (int i = 0; i < rect.size(); i++)
        {
            Point  center;                                                      //圆心
            int radius;                                                         //圆的半径

            //由于smallImg是Image的1/2,检测smallImg在Image上绘制圆,要将圆的各类信息扩大一倍

            center.x = cvRound((rect[i].x + rect[i].width * 0.5)) * 2;
            center.y = cvRound((rect[i].y + rect[i].height * 0.5)) * 2;
            radius = cvRound((rect[i].width + rect[i].height) * 0.25) * 2;

            circle(Image, center, radius, CV_RGB(255, 0, 0), 2);                //绘制圆形
        }
        imshow("人脸识别", Image);
        if (waitKey(30) >= 0)break;
    }

 

OK,就是这样

OpenCV——人脸检测

标签:利用   读取   rect   line   res   color   blog   style   cto   

原文地址:http://www.cnblogs.com/farewell-farewell/p/5999589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!