opencv人脸检测

先说说如何配置(对于没有配置过的朋友)

网上大家都在发各种关于如何配置opencv的,什么保姆级教程,什么全网最详细,看这种东西让我吃尽了苦头。而我偏偏不走寻常路,给你们一个简单快捷的方式。用vs的人应该都知道.props文件的厉害,如果不知道的话请去看 VS2019保存props属性表并在新项目中导入props属性表_vs2019 props-CSDN博客

我把配置的props文件发出来

链接:https://pan.baidu.com/s/1ZE86jc9TvTUzXIxoDXqihQ?pwd=jasp 
提取码:jasp 
(前提是你把opencv主文件夹整个复制到源文件目录下)

这个props可能有问题,请看专栏中的另一篇文章查看正确版

这个props可能有问题,请看专栏中的另一篇文章查看正确版

这个props可能有问题,请看专栏中的另一篇文章查看正确版

(重要的事情说三遍)

看我人多好,凭这点,你们点赞收藏关注下呗

配置完之后,我们上代码,复制完代码别走,还有极其重要的内容!!!!!!

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/objdetect/face.hpp>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
    /*********************************** 1.加载人脸检测器  ******************************/
    // 建立级联分类器
    CascadeClassifier cascade;
    // 加载训练好的 人脸检测器(.xml)
    // 注意路径问题,当前目录的上一个目录中的xml文件夹下
    const string path = "人脸识别/haarcascade_frontalface_alt2.xml";
    if (!cascade.load(path))
    {
        cout << "cascade load failed!\n";
        return -1;
    }

    /******************************** 2.打开摄像头  ******************************/
    VideoCapture capture(0);
    if (!capture.isOpened())
    {
        cout << "failed to open camera!" << endl;
        return -1;
    }

    // 创建窗口,用于显示最终结果
    namedWindow("face_detect");

    // 循环读取每一帧图像
    while (true)
    {
        // 读取一帧图像
        Mat frame;
        capture >> frame;
        if (frame.empty())
            break;

        //计时
        double t = (double)getTickCount();

        /*********************************** 3.人脸检测 ******************************/
        vector<Rect> faces(0);
        cascade.detectMultiScale(frame, faces, 1.1, 2, 0, Size(30, 30));

        cout << "detect face number is :" << faces.size() << endl;

        /********************************  4.显示人脸矩形框 ******************************/
        if (faces.size() > 0)
        {
            for (size_t i = 0; i < faces.size(); i++)
            {
                rectangle(frame, faces[i], Scalar(150, 0, 0), 3, 8, 0);

            }
        }
        else
            cout << "未检测到人脸" << endl;

        t = (double)getTickCount() - t;
        cout << "检测人脸用时:" << t * 1000 / getTickFrequency() << "ms" << endl;

        // 显示图像
        imshow("face_detect", frame);

        // 按下ESC键退出循环
        if (waitKey(30) == 27)
            break;
    }

    // 释放摄像头
    capture.release();

    // 销毁窗口
    destroyAllWindows();
    return 0;
}

哦,忘了一件事,找到opencv文件夹中的一下路径opencv\sources\data\haarcascades,把里头的所有xml文件全选复制,在main.cpp目录下新建文件夹,名为”人脸识别“,把那些xml文件粘贴进去

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值