210326阶段三人脸识别

这篇博客主要介绍了人脸识别的三个关键步骤:使用级联分类器进行人脸检测,通过LBPH模型进行人脸训练和学习,并利用该模型进行人脸识别。作者分享了学习过程中的理解和收获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、学习的知识点

1.人脸检测,使用级联分类器读取haarcascade_frontalface_default.xml 文件检测照片里面有无脸的信息

2.人脸训练/学习:保存一张人脸不同角度的照片,使用LBPH人脸模型提取脸的信息/特征存为xml或yml文件。

cv::Ptr<face::LBPHFaceRecognizer> model; //cv::ptr 类似于指针 LBPHFaceRecognizer人脸模型 可以用来训练或者识别 LBPH局部二进制编码直方图
void MainWindow::on_pushButton_train_clicked()
{
    vector<Mat> images;//要训练的图片
    vector<int> ids; //照片对应人物的id
    char buf[100];
    for (int i=0;i<50;i++)
    {
        sprintf(buf,"./image/%d.jpg",i);
        images.push_back( imread(buf,CV_LOAD_IMAGE_GRAYSCALE) ); //CV_LOAD_IMAGE_GRAYSCALE 以灰度缩放读取图片
        ids.push_back(1001);
    }

    this->model->train(images,ids); //训练的API  训练完成
    this->model->save("faces.yml"); //存成文件
}

3.人脸识别:使用LBPH人脸模型读取文件信息,再使用该模型的predict方法读取照片,比较照片的特征与文件的特征是否符合,识别出人脸。

void MainWindow::on_pushButton_recongnize_clicked()
{
    this->model->read("./faces.yml"); //读取存放面部特征的图片
    Mat img=imread("./image/1.jpg",CV_LOAD_IMAGE_GRAYSCALE);
    this->model->setThreshold(60);//设置精准度
    int ret=this->model->predict(img);//将照片与特征比较,符合就输出照片对应的id
    cout<<ret<<endl;
}

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值