zoukankan      html  css  js  c++  java
  • opencv::视频人脸检测

    视频流抓取人脸和眼睛

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    using namespace cv;
    using namespace std;
    
    CascadeClassifier face_cascader; //分类器
    CascadeClassifier eye_cascader;
    String facefile = "D:/Appinstall/opencv-3.4.4_vc15/etc/haarcascades/haarcascade_frontalface_alt.xml";
    String eyefile =  "D:/Appinstall/opencv-3.4.4_vc15/etc/haarcascades/haarcascade_eye.xml";
    
    int main(int argc, char** argv) {
        if (!face_cascader.load(facefile)) {
            printf("could not load face feature data...
    ");
            return -1;
        }
        if (!eye_cascader.load(eyefile)) {
            printf("could not load eye feature data...
    ");
            return -1;
        }
        namedWindow("camera-demo", CV_WINDOW_AUTOSIZE);
        VideoCapture capture(0); //读取摄像头视频流
        Mat frame;
        Mat gray;
        vector<Rect> faces;
        vector<Rect> eyes;
        while (capture.read(frame)) {
            cvtColor(frame, gray, COLOR_BGR2GRAY);
            equalizeHist(gray, gray);
            face_cascader.detectMultiScale(gray, faces, 1.2, 3, 0, Size(30, 30));
            for (size_t t = 0; t < faces.size(); t++) {
                Rect roi;
                roi.x = faces[static_cast<int>(t)].x;
                roi.y = faces[static_cast<int>(t)].y;
                roi.width = faces[static_cast<int>(t)].width;
                roi.height = faces[static_cast<int>(t)].height / 2;
    
                Mat faceROI = frame(roi);
                eye_cascader.detectMultiScale(faceROI, eyes, 1.2, 3, 0, Size(20, 20));
                for (size_t k = 0; k < eyes.size(); k++) {
                    Rect rect;
                    rect.x = faces[static_cast<int>(t)].x + eyes[k].x;
                    rect.y = faces[static_cast<int>(t)].y + eyes[k].y;
                    rect.width = eyes[k].width;
                    rect.height = eyes[k].height;
                    rectangle(frame, rect, Scalar(0, 255, 0), 2, 8, 0);
                }
                rectangle(frame, faces[static_cast<int>(t)], Scalar(0, 0, 255), 2, 8, 0);
            }
            imshow("camera-demo", frame);
            char c = waitKey(30);
            if (c == 27) {
                break;
            }
        }
        waitKey(0);
        return 0;
    }
  • 相关阅读:
    POJ 3253 Fence Repair STL 优先队列
    P1196 [NOI2002]银河英雄传说 题解
    UVA1316 Supermarket 题解
    P1955 [NOI2015]程序自动分析 题解
    P3807 【模板】卢卡斯定理 题解
    P2480 [SDOI2010]古代猪文 题解
    题解 P4778 【Counting swaps】
    P1313 计算系数 题解
    P3810 【模板】三维偏序(陌上花开)题解
    P1072 Hankson 的趣味题 题解
  • 原文地址:https://www.cnblogs.com/osbreak/p/11699310.html
Copyright © 2011-2022 走看看