【注意】本博文的档次适合OpenCV初学者,和要做本科生毕业设计这类档次。

源码的下载地址和原理理论部分请走下面连接

http://blog.csdn.net/qq78442761/article/details/71157980

上一节是模型训练链接如下

http://blog.csdn.net/qq78442761/article/details/71159508

当人脸库中无此人数据时识别结果截图:

当增加此人数据后运行结果:

识别过程中,人突然跑开,或者人脸精度不大时:

这里我说明下此识别的思路:以标号>=2的人为训练库里面的人,当为标号>=2时识别+1,否则-1,一共识别20次,当值为12时,说明识别成功,然后读取标号对应的人。

代码如下:

void MainWindow::on_action_FaceRecognition_triggered()
{int label=0;addpeople.file.getManLabel();double confidence=0.0;cv::VideoCapture cap(0);    //打开默认摄像头if (!cap.isOpened()){QMessageBox::warning(this,tr("错误"),tr("摄像头打开失败"),QMessageBox::Ok);return;}cv::Mat frame;cv::Mat gray;cv::CascadeClassifier cascade;bool stop = false;//训练好的文件名称,放置在可执行文件同目录下cascade.load("haarcascade_frontalface_alt.xml");cv::Ptr<cv::FaceRecognizer> modelPCA = cv::createEigenFaceRecognizer();modelPCA->load("MyFacePCAModel.xml");int sl=0;while (!stop){cap >> frame;//建立用于存放人脸的向量容器std::vector<cv::Rect> faces(0);cv::cvtColor(frame, gray, CV_BGR2GRAY);//改变图像大小,使用双线性差值//resize(gray, smallImg, smallImg.size(), 0, 0, INTER_LINEAR);//变换后的图像进行直方图均值化处理cv::equalizeHist(gray, gray);cascade.detectMultiScale(gray, faces,1.1, 2,cv::CASCADE_FIND_BIGGEST_OBJECT|cv::CASCADE_DO_ROUGH_SEARCH,cv::Size(30, 30));cv::Mat face;cv::Point text_lb;for (size_t i = 0; i < faces.size(); i++){if (faces[i].height > 0 && faces[i].width > 0){face = gray(faces[i]);text_lb = cv::Point(faces[i].x, faces[i].y);cv::rectangle(frame, faces[i], cv::Scalar(255, 0, 0), 1, 8, 0);}}cv::Mat face_test;int predictPCA = 0;if (face.rows >= 120){cv::resize(face, face_test, cv::Size(92, 112));}//Mat face_test_gray;//cvtColor(face_test, face_test_gray, CV_BGR2GRAY);if (!face_test.empty()){//测试图-灰度图int predictedLabel=-1;predictPCA = modelPCA->predict(face_test);modelPCA->predict(face_test,predictedLabel,confidence);qDebug()<<"predictedLabel:"<<predictedLabel;qDebug()<<"confidence:"<<confidence;qDebug()<<"s1:"<<sl;}if(sl>20){if(label<5)QMessageBox::information(this,tr("失败"),tr("人脸库无此人"),QMessageBox::Ok);elseQMessageBox::information(this,tr("失败"),tr("人脸确认度低"),QMessageBox::Ok);return;}if(predictPCA!=-1&&predictPCA!=1&&confidence<3200)label++;if(predictPCA==1||predictPCA==0)label--;qDebug()<<"label:"<<label;cv::waitKey(50);if(label>12){//qDebug()<<predictPCA;//std::string name = "Being recognized";//cv::putText(frame, name, text_lb, cv::FONT_HERSHEY_COMPLEX, 1, cv::Scalar(0, 0, 255));//qDebug()<<"姓名"<<addpeople.file.who[predictPCA];QString name="你是-";name.append(addpeople.file.who[predictPCA]);QMessageBox::information(this,tr("识别成功"),name,QMessageBox::Ok);return;}sl++;imshow("face", frame);if (cv::waitKey(50) >= 0)stop = true;}
}

在此人脸识别就结束了,下一节是结合mysql,人脸识别,tcp socket,xml,3DES加密,做一个简单的人脸识别系统。

源码和理论部分在本博文开头有提供。

Qt5.7+Opencv2.4.9人脸识别(五)人脸识别相关推荐

  1. Qt5.7+Opencv2.4.9人脸识别(一)项目介绍

    [注意]本博文的档次适合Opencv初学者,和要做本科生毕业设计这类档次. 昨天晚上刚刚参加了某s*i*p的答辩,发现就是走个流程,与Q群里面其他学生的学校比起来,我们学校编程与其他学校差距较大,在此 ...

  2. Qt5.7+Opencv2.4.9人脸识别(三)人脸处理

    [注意]本博文的档次适合OpenCV初学者,和要做本科生毕业设计这类档次. 上一节是人脸采集,链接如下: http://blog.csdn.net/qq78442761/article/details ...

  3. Qt5.7+Opencv2.4.9人脸识别(二)人脸采集

    [注意]本博文的档次适合OpenCV初学者,和要做本科生毕业设计这类档次. 源码的下载地址和原理理论部分请走下面连接 http://blog.csdn.net/qq78442761/article/d ...

  4. (五)为边缘AI人脸识别创建人脸数据库

    目录 介绍 数据库中有什么 创建数据库 填充数据库 下一步 在这里,我们将解释用于人脸识别的简单人脸数据库的结构,开发用于将人脸添加到人脸数据库的实用程序的Python代码,并提供下载人脸以创建数据库 ...

  5. 人脸真伪验证与识别:ICCV2019论文解析

    人脸真伪验证与识别:ICCV2019论文解析 Face Forensics++: Learning to Detect Manipulated Facial Images 论文链接: http://o ...

  6. 利用MTCNN和FaceNet实现人脸检测和人脸识别 | CSDN博文精选

    作者 | pan_jinquan 来源 | CSDN博文精选 (*点击阅读原文,查看作者更多文章) 人脸检测和人脸识别技术算是目前人工智能方面应用最成熟的技术了.本博客将利用MTCNN和FaceNet ...

  7. 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别

    背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu C ...

  8. Opencv与dlib联合进行人脸关键点检测与识别

    前言 依赖库:opencv 2.4.9 /dlib 19.0/libfacedetection 本篇不记录如何配置,重点在实现上.使用libfacedetection实现人脸区域检测,联合dlib标记 ...

  9. MDFR :基于人脸图像复原和人脸转正联合模型的人脸识别方法

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:AI 科技评论报道 编辑 | 陈大鑫 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可 ...

最新文章

  1. bose耳机信号断续_最便宜的TWS主动降噪耳机 233621 Zen 4400字深度评测
  2. 【Android 属性动画】属性动画 Property Animation 工作原理 ( 线性插值动画 | 非线性插值动画 | 动画计算 | 经过分数 | 插值分数 | 类型估值器)
  3. CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题
  4. provider android简书,Android 使用ContentProvider在应用间共享数据
  5. 会考计算机考试vb知识点,高中会考计算机vb知识点.doc
  6. 微课|Python程序设计开发宝典(5.1.2节):嵌套函数定义2
  7. SQLi LABS Less-4 联合注入+报错注入
  8. mysql数据的表分区二
  9. 通力法评 | 简评中国证监会关于MOM产品的征求意见稿
  10. MATLAB上根号怎么输入,在matlab里面怎么输入开方号(根号)?9的开方怎么写?...
  11. 关于“程序员996”,互联网大神发话了,能顶用吗?
  12. 韩天峰php教程,韩天峰 - Swoole4-全新的PHP编程模式
  13. 抖音表白程序Python版,明人不说暗话,我喜欢你
  14. 从1到N,第十二届中国IDC产业年度大典在京启幕
  15. 初步熟悉新webserver goahead
  16. 预测分析·民宿价格预测【和鲸社区】
  17. 阿里技术实战:一些云上资源调度的经验谈
  18. c语言基础循环练习题,C语言练习题:循环部分
  19. sql文字转换全拼_取汉字全拼的SQL函数
  20. 安装/重装Win10系统

热门文章

  1. 想学好编程,别背代码!
  2. C/C++工程师需要掌握哪些技能?他们的工资这么高,是有原因的!
  3. 在谈数据治理和数字化的时候,别忘了数据标准
  4. 如果可以,我们一起留在竹山。
  5. 过了一会的gduuu
  6. 【法克鱿】域名DNS设置修改失败!
  7. 你应该知道的Python3.6、3.7、3.8新特性 ,赶紧收藏!!
  8. 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多,把经历分享给你们!
  9. 第六节:ES6为字符串String带来哪些好玩的特性?
  10. 如何腾出计算机内存,win7系统(取消)删除虚拟内存让硬盘空间轻松腾出来