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;
    }
  • 相关阅读:
    poj3294 Life Forms(后缀数组)
    1628. White Streaks(STL)
    1523. K-inversions(K逆序对)
    1890. Money out of Thin Air(线段树 dfs转换区间)
    1350. Canteen(map)
    1521. War Games 2(线段树解约瑟夫)
    1003. Parity(并查集)
    1470. UFOs(三维树状数组)
    1471. Tree(LCA)
    1494. Monobilliards(栈)
  • 原文地址:https://www.cnblogs.com/osbreak/p/11699310.html
Copyright © 2011-2022 走看看