OpenCV使用LBPHFaceRecognizer来实现人脸识别

1、概述

  案例:使用LBPHFaceRecognizer来实现人脸识别

  主要代码展示

 //实例化LBPH人脸识别算法实例
    Ptr<LBPHFaceRecognizer> model = LBPHFaceRecognizer::create();
    model->train(images,labels);//训练

    //预测
    int predictLabel = model->predict(testMat);

  实现步骤

    1.准备训练数据

    2.准备测试数据

    3.实例化LBPFaceRecognizer model

    4.开始训练model->trans

    5.开始预测model->predict

    6.如果测试标签值与训练标签值一致则说明人脸识别成功,否则失败

2、代码示例

 ifstream file(filePath,ifstream::in);
    if(!file){
        qDebug()<<"加载人脸训练数据失败";
        return;
    }
    //准备训练数据
    string line ,path,classLabel;
    vector<Mat> images;
    vector<int> labels;
    while(getline(file,line)){
        stringstream liness(line);
        getline(liness,path,' ');
        getline(liness,classLabel);
        images.push_back(imread(path,0));
        labels.push_back(atoi(classLabel.c_str()));
    }

    //准备测试数据
    Mat testMat = images[images.size()-1];
    int testLabel = labels[labels.size()-1];
    images.pop_back();
    labels.pop_back();

    //实例化LBPH人脸识别算法实例
    Ptr<LBPHFaceRecognizer> model = LBPHFaceRecognizer::create();
    model->train(images,labels);//训练

    //预测
    int predictLabel = model->predict(testMat);
    //如果测试标签值和预测标签值抑制则说明人脸识别成功,否则不成功
    cout <<"测试标签值:"<<testLabel<<",预测标签值:"<<predictLabel<<endl;

3、演示图像

 本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个基本的使用OpenCV实现人脸识别的Python代码示例。在这个示例中,我们使用OpenCV提供的人脸识别模块和训练好的人脸识别模型来实现人脸识别。 ```python import cv2 # 加载人脸识别模型 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 加载已经训练好的人脸识别模型 recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read('trainer.yml') # 打开摄像头 cap = cv2.VideoCapture(0) while True: # 读取摄像头的画面 ret, img = cap.read() # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5) # 遍历所有检测到的人脸 for (x, y, w, h) in faces: # 绘制人脸矩形框 cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # 提取人脸区域并进行识别 roi_gray = gray[y:y+h, x:x+w] id_, confidence = recognizer.predict(roi_gray) # 根据识别结果显示人名和置信度 if confidence < 100: name = "Person {}".format(id_) confidence = " {0}%".format(round(100 - confidence)) else: name = "Unknown" confidence = " {0}%".format(round(100 - confidence)) cv2.putText(img, name, (x+5, y-5), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2) cv2.putText(img, str(confidence), (x+5, y+h-5), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0), 1) # 显示画面 cv2.imshow('Face Recognition', img) # 按下q键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头并关闭窗口 cap.release() cv2.destroyAllWindows() ``` 在上面的代码中,我们使用OpenCV提供的人脸识别模块`cv2.CascadeClassifier`来检测人脸,并使用已经训练好的人脸识别模型`cv2.face.LBPHFaceRecognizer_create()`来进行人脸识别。具体的实现细节请参考代码注释。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值