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;
    }
  • 相关阅读:
    python库--pandas--Series.str--字符串处理
    前端--jstree--异步加载数据
    python库--flask--创建嵌套蓝图
    Git--生成公钥和私钥并添加gitlab访问权限
    es查询--请求body
    python生成时间序列(date_range)
    golang使用组合完成伪继承
    golang interface类型的动态绑定
    ruby环境安装草稿
    openfire
  • 原文地址:https://www.cnblogs.com/osbreak/p/11699310.html
Copyright © 2011-2022 走看看