当前位置: 首页 > news >正文

访问自己做的网站网站建设 经典书籍

访问自己做的网站,网站建设 经典书籍,阿里云网站建设初衷,做网站制作的摘要机器学习的作用#xff1a;根据提供的图片模型通过算法生成数据模型#xff0c;从而在其它图片中查找相关的目 标。 级联分类器#xff1a;是用来人脸识别。 在判断之前#xff0c;我们要先进行学习#xff0c;生成人脸的模型以便后续识别使用。 人脸识别器#xff1a;…机器学习的作用根据提供的图片模型通过算法生成数据模型从而在其它图片中查找相关的目 标。 级联分类器是用来人脸识别。 在判断之前我们要先进行学习生成人脸的模型以便后续识别使用。 人脸识别器判断是谁的面部。 FaceRecognizer类是opencv提供的人脸识别器基类LBPHFaceRecognizer是根据LBPH算法实现的识别器类其中LBPHFaceRecognizer识别器支持在原有模型基础上继续学习模型数据可以累计。 创建LBPHFaceRecognizer识别器对象 所需的头文件#include 、using namespace cv::face;创建空的人脸识别器对象PtrFaceRecognizer recognizer LBPHFaceRecognizer::create();​根据已有的模型创建人脸识别器对象在创建人脸识别器的时候需要一个已经学习好的模型文件PtrFaceRecognizer recognizer FaceRecognizer::loadLBPHFaceRecognizer(模型文件.xml); 机器学习并更新模型 容器容器中装了n张人脸Mat对象先采集脸装到容器中存储标签人的身份证每一张脸给一个编号1 张三脸 2 李四脸 3 王五脸。功能函数1void update(InputArrayOfArray src,InputArray labels)//机器学习并更新模型功能函数2void train(InputArrayOfArrays src,InputArray labels);//只是学习不更新//参数1src图片模型数组 vectorMat//参数2labels标签数组每个模型识别后的标签vectorint 保存模型 功能函数void save(const String filename);//参数1模型文件的名字例如recognizer-update(study_faces,study_label);//学习recognizer-save(face.xml);//将学习的成果保存到face.xml模型文件中生成模型study_faces.clear();、study_labels.clear(); 预测目标 判断这个人脸到底是谁。功能函数void predict(InputArray src, int label, double confidence)//参数1预测图形 Mat src//参数2:预测后的标签学习时对应的标签//参数3预测出结果的可信度数值越小可信度越高例如int label -1;//预测后的标签学习时对应的标签double confidence 0;//可信度Mat face frame(faces[0]);//人脸区域cvtColor(face,face,CV_BGR2GRAY);//更改色彩空间cv::resize(face,face,Size(90,90));//设置人脸的大小recognizer-predict(face,label,confidence); //预测相当于识别人脸预测出人脸是谁的面部label的值就那张脸对应的标签如果预测不到label的值是-1。 设置可信度 功能函数void setThreshold(double val);//参数1预测可信度极值预测可信度超出极值则预测失败。 实例 头文件 #ifndef WIDGET_H #define WIDGET_H#include QWidget #include opencv2/opencv.hpp #include iostream #include math.h #includeopencv2/face.hpp #include vector #include map #include QMessageBox #include QDebug #include QFile #include QTextStream #include QDateTime #include QTimerEvent #includeQtSerialPort/QtSerialPort #includeQtSerialPort/QSerialPortInfo using namespace cv; using namespace cv::face; using namespace std;namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic:explicit Widget(QWidget *parent 0);~Widget();private slots:void on_openCameraBtn_clicked();void on_closeCameraBtn_clicked();void on_inputFaceBtn_clicked();private:Ui::Widget *ui;/***********************第一模块关于摄像头的相关组件**********************/VideoCapture v; //视频流对象Mat src; //原图像Mat rgb; //存放rgb图像因为qt能识别的图像色彩空间为rgbMat gray; //灰度图Mat dst; //均衡化图像CascadeClassifier c; //级联分类器vectorRect faces; //存储人脸矩形区域的容器int cameraId; //摄像头的定时器void timerEvent(QTimerEvent *event); //定时器事件处理函数/**********************第二模块录入人脸的相关组件************************/PtrFaceRecognizer recognizer; //人脸识别器vectorMat study_face; //要录入的人脸容器vectorint study_lab; //要录入的人脸的标签int studyId; //人脸录入的定时器int flag; //标识是否正在录入人脸int count; //记录学习的次数/**********************第三模块人脸检测相关组件*************************/int checkId; //人脸检测的定时器};#endif // WIDGET_H 源文件 #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui-setupUi(this);//将登录按钮设置成不可用状态ui-loginBtn-setEnabled(false);//启动摄像头if(!v.open(0)){QMessageBox::information(this, 错误,打开摄像头失败);return ;}//将级联分类器加载进来if(!c.load(D:/opencv/resource/haarcascade_frontalface_alt2.xml)){QMessageBox::information(this,失败, 人脸识别模型装载失败);return ;}//配置人脸识别器QFile file(D:/opencv/resource/myFace.xml);//判断文件是否存在如果存在则直接下载如果不存在则创建一个人脸识别器if(file.exists()){//人脸模型存在直接下载即可recognizer FaceRecognizer::loadLBPHFaceRecognizer(D:/opencv/resource/myFace.xml);}else{//人脸模型不存在需要进行创建recognizer LBPHFaceRecognizer::create();}//启动人脸检测的定时器checkId this-startTimer(3000);//设置人脸识别的可信度recognizer-setThreshold(100);flag 0; //表明开始时就处于检测}Widget::~Widget() {delete ui; } //打开摄像头按钮对应的槽函数 void Widget::on_openCameraBtn_clicked() {//启动定时器cameraId this-startTimer(20);ui-cameraLab-show(); }//关闭摄像头 void Widget::on_closeCameraBtn_clicked() {//关闭定时器this-killTimer(cameraId);ui-cameraLab-hide();}//定时器事件处理函数 void Widget::timerEvent(QTimerEvent *event) {//判断是哪个定时器到位if(event-timerId() cameraId){//1、从摄像头中读取一张图像v.read(src); //得到原图//2、将图像翻转flip(src, src, 1);//3、将src的bgr图像转换为rgb图像cvtColor(src, rgb, CV_BGR2RGB);//4、重新设置大小cv::resize(rgb, rgb, Size(300,300));//5、灰度处理cvtColor(rgb, gray, CV_RGB2GRAY);//6、均衡化处理equalizeHist(gray, dst);//7、使用级联分类器获取人脸矩形区域c.detectMultiScale(dst, faces);//8、将矩形框绘制到rgb图像上for(int i0; ifaces.size(); i){rectangle(rgb, faces[i], Scalar(255,0,0), 2);}//9、使用rgb图像将Mat图构造出一个qt能识别的图像QImage img(rgb.data, rgb.cols, rgb.rows, rgb.cols*rgb.channels(), QImage::Format_RGB888);//功能通过其他图像构造出一个QImage图像//参数1其他图像的数据//参数2图像的宽度//参数3图像的高度//参数4每一行的字节数//参数5图像格式24位图每一种颜色使用8位表示//10、将图像展示到lab中ui-cameraLab-setPixmap(QPixmap::fromImage(img));}//判断是否是人脸录入定时器到位if(event-timerId() studyId){//判断ui界面是否有矩形框if(faces.empty())return;//判断人脸识别器是否存在if(recognizer.empty()) return;//提示正在录入人脸qDebug()正在录入请稍后...;//获取ui界面中矩形框框起来的人脸区域Mat face src(faces[0]);//将该图像进行重新设置大小cv::resize(face,face,Size(100,100));//灰度处理cvtColor(face,face,CV_BGR2GRAY);//均衡化处理equalizeHist(face,face);//将人脸放入学习容器中study_face.push_back(face);study_lab.push_back(1);count; //表明完成一次人脸的存放if(count 50) //已经收集50张人脸进行学习{count 0; //以便于下一次录入//更新人脸模型将图像模型转换为数据模型//函数原型void update(InputArrayOfArrays src, InputArray labels);//参数1要进行更新的人脸数组//参数2要跟新的人脸标签数组//返回值无recognizer-update(study_face, study_lab);//将数据模型保存到本地磁盘中recognizer-save(D:/opencv/resource/myFace.xml);//殿后工作study_face.clear(); //清空人脸数组study_lab.clear(); //清空标签数组flag 0; //表明录入已经结束可以进行人脸检测了ui-inputFaceBtn-setEnabled(true); //按钮设置成可用状态this-killTimer(studyId); //关闭人脸录入的定时器QMessageBox::information(this,成功,人脸录入成功);}}//判断是否是人脸检测的定时器到位if(event-timerId() checkId){qDebug()正在检测...;//判断是否处于检测if(flag 0){QFile file(D:/opencv/resource/myFace.xml);if(file.exists()) //表明人脸模型存在的基础上进行识别{if(faces.empty() || recognizer-empty()) return; //ui界面无矩形框或者没有人脸识别器//到此表明可以进行检测Mat face src(faces[0]);//重新设置大小保持跟保存人脸时一致cv::resize(face,face,Size(100,100));//灰度处理cvtColor(face,face,CV_BGR2GRAY);//均衡化处理equalizeHist(face,face);//定义记录检测后返回的结果的变量int lab -1; //返回的图像的标签double conf 0.0; //返回图像的可信度//将该人脸进行预测recognizer-predict(face, lab, conf);qDebug()lab lab conf conf;//对人脸识别后的结果进行判断if(lab ! -1){ui-loginBtn-setEnabled(true);}}}}}//录入人脸按钮对应的槽函数 void Widget::on_inputFaceBtn_clicked() {//启动人脸录入的定时器qDebug()开始进行人脸录入...;studyId this-startTimer(60);//将按钮设置成不可用状态ui-inputFaceBtn-setEnabled(false);//将flag设置成1,表示正在录入人脸不要进行人脸检测了flag 1;count 0; //清空计数器 }
http://www.hkea.cn/news/14400859/

相关文章:

  • 长春网站优化团队在线制作图片旋转动态
  • 常熟专业网站建设网站模板下载简单的那种
  • 网站快速推广排名技巧安装wordpress时出现空白
  • 西充县建设路小学网站嘉兴秀洲区全网seo优化优惠
  • 网站版权 技术支持重庆九龙坡区网站建设
  • 枣阳网站建设公司销售管理系统业务处理流程
  • 如何给网站增加外链wordpress数据库thinkphp
  • 营销式网站制作做二手物资哪个网站好
  • 网站底部浮动代码网站建设在淘宝上以后让还让发布吗
  • 搭建一个自己的网站网站cdn加速怎么入侵
  • 网站技术培训学校搜索引擎优化包括( )方面的优化
  • 自己如何免费制作一个网站2018wordpress主题
  • 清远专业网站制作公司wordpress 网站打开速度慢
  • 佛山做网站开发东莞如何编写网站建设
  • 山西笑傲网站建设推广拓者吧室内设计吧
  • 网站建设的需求新手学网络运营要多久
  • 吴川网站建设余姚网站建设维护最新招聘信息
  • 电影网站如何做会同县做网站
  • 景观设计师如何做网站wordpress折叠菜单插件
  • 自适应网站建设哪家好代理网站是什么
  • 域名有关的网站wordpress网站搭建教程视频
  • 专业做化妆品的网站有哪些合肥模板建站多少钱
  • 企业网站改一下多少钱织梦个人网站模版
  • 贵州住房和城乡建设厅网站网站建设违约合同
  • 网站怎么做才是对搜索引擎友好重庆电商网站建设费用
  • 网站建设与企业管理心得体会name域名的网站
  • 网站域名备案注册证书wordpress 回收站在哪个文件夹
  • 给一个公司做网站需要什么内容做图像网站
  • 企业网站建设专业wordpress 留言页面
  • 企业网站策划案模板大连专业企业建站找哪家