QT5+OpenCV人脸识别
2016-01-28 15:40
399 查看
需要用到OpenCV扩展包里的相关函数,请先编译OpenCV的contrib包。参考:Windows环境中编译opencv3.0同时加入OPENCV_contrib库及解决遇到相关问题
定义相关变量
训练模型
人脸识别
保存模型
效果如图
PS:
经测试同一个人用正面,正面偏左、偏右、偏上、偏下五个角度各一张图片训练后阉值设置为85-90识别率比较高
测试用的训练图片可以用ORL人脸库
定义相关变量
vector<Mat> images; //训练样本 vector<int> labels; //标签,用来标记样本 QString name[10]; //用来存储姓名,因为标签是整型无法标识姓名 QString modelXml = "att_model.xml";//用来存储训练好的模型 Ptr<LBPHFaceRecognizer> model = createLBPHFaceRecognizer(); if(QFile::exists(modelXml)) //加载训练好的模型 { model->load(modelXml.toStdString()); }
训练模型
images.push_back(imread(imgName.toStdString(),CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(ui->labelBox->value()); name[ui->labelBox->value()] = ui->nameEdit->text(); //根据训练标签来存储姓名 model->update(images,labels); //更新训练模型,train()也是训练函数但会清空之前的模型
人脸识别
Mat image = imread(imgName.toStdString(), CV_LOAD_IMAGE_GRAYSCALE);//用来识别的图片 model->setThreshold(ui->doubleSpinBox->value()); //设置识别阉值,同一个人训练的图片越多此值可以设置得越小,具体需要自己调试 int result = model->predict(image);//识别并返回匹配的标签 if(result < 0) ui->nameLabel->setText(tr("无法识别此人")); else ui->nameLabel->setText(tr("%1").arg(name[result]));//根据返回的标签索引姓名
保存模型
model->save(modelXml.toStdString());
效果如图
PS:
经测试同一个人用正面,正面偏左、偏右、偏上、偏下五个角度各一张图片训练后阉值设置为85-90识别率比较高
测试用的训练图片可以用ORL人脸库
相关文章推荐
- QT5+OpenCV人脸、人眼检测
- 编译VTK时Qt5_DIR-NOTFOUND的解决方法
- QT 主要类使用方法
- 详细介绍QT 主要类使用方法
- deploy 自己编写的 QT 程序 (window下打包程序)
- qt5.3的操作技巧
- QTextEdit实现语法高亮-Syntax Highlighter Example例子简单介绍
- 自学QT之建立子项目
- 自学QT之实现程序启动画面
- QT5+OpenCV环境搭建及入门相关
- qt 静态成员函数
- QT backgound-image 与 bord-image
- qt 的一个bug
- QT C1041错误
- QT信号槽连接
- install eigen in ubuntu and use it in qt
- install glm library in ubuntu and use it in qt
- 有什么很好的软件是用 Qt 编写的?
- PyQt5_例1(图标、状态栏、菜单栏、工具栏)
- Install Qt 5.5.1and Qt Creator3.6.0 in Ubuntu 14.04