在vs2010+opencv2.4.9运行环境,通过特征脸、PCA、LBPH三种方法分别训练生成了三个分类器,有训练源代码(加详细注释)和含有400张92*112人脸的数据库!
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 125440 2018-03-22 10:22 训练模型Debug训练模型.exe
文件 815336 2018-03-22 10:22 训练模型Debug训练模型.ilk
文件 1608704 2018-03-22 10:22 训练模型Debug训练模型.pdb
文件 57671680 2018-05-30 23:41 训练模型ipch训练模型-f1021360训练模型-96bc5428.ipch
文件 15039 2018-03-15 20:16 训练模型训练模型at.txt
文件 690 2018-03-22 10:22 训练模型训练模型Debugcl.command.1.tlog
文件 18564 2018-03-22 10:22 训练模型训练模型DebugCL.read.1.tlog
文件 396 2018-03-22 10:22 训练模型训练模型DebugCL.write.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debuglink-cvtres.read.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debuglink-cvtres.write.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debuglink.11580-cvtres.read.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debuglink.11580-cvtres.write.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debuglink.11580.read.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debuglink.11580.write.1.tlog
文件 3198 2018-03-22 10:22 训练模型训练模型Debuglink.command.1.tlog
文件 9984 2018-03-22 10:22 训练模型训练模型Debuglink.read.1.tlog
文件 858 2018-03-22 10:22 训练模型训练模型Debuglink.write.1.tlog
文件 424217 2018-03-22 10:22 训练模型训练模型Debugmian.obj
文件 390 2018-03-22 10:22 训练模型训练模型Debugmt.command.1.tlog
文件 450 2018-03-22 10:22 训练模型训练模型Debugmt.read.1.tlog
文件 346 2018-03-22 10:22 训练模型训练模型Debugmt.write.1.tlog
文件 542 2018-03-22 10:22 训练模型训练模型Debug
c.command.1.tlog
文件 422 2018-03-22 10:22 训练模型训练模型Debug
c.read.1.tlog
文件 326 2018-03-22 10:22 训练模型训练模型Debug
c.write.1.tlog
文件 478208 2018-03-22 10:22 训练模型训练模型Debugvc100.idb
文件 978944 2018-03-22 10:22 训练模型训练模型Debugvc100.pdb
文件 2604 2018-03-22 10:21 训练模型训练模型Debug训练模型.Build.CppClean.log
文件 406 2018-03-22 10:22 训练模型训练模型Debug训练模型.exe.embed.manifest
文件 472 2018-03-22 10:22 训练模型训练模型Debug训练模型.exe.embed.manifest.res
文件 381 2018-03-22 10:22 训练模型训练模型Debug训练模型.exe.intermediate.manifest
............此处省略465个文件信息
//#include “stdafx.h“
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
static Mat norm_0_255(InputArray _src) {
Mat src = _src.getMat();
// 创建和返回一个归一化后的图像矩阵:
Mat dst;
switch (src.channels()) {
case1:
cv::normalize(_src dst 0 255 NORM_MINMAX CV_8UC1);
break;
case3:
cv::normalize(_src dst 0 255 NORM_MINMAX CV_8UC3);
break;
default:
src.copyTo(dst);
break;
}
return dst;
}
//使用CSV文件去读图像和标签,主要使用stringstream和getline方法
static void read_csv(const string& filename vector& images vector& labels char separator = ‘;‘) {
std::ifstream file(filename.c_str() ifstream::in);
if (!file) {
string error_message = “No valid input file was given please check the given filename.“;
CV_Error(CV_StsBadArg error_message);
}
string line path classlabel;
while (getline(file line)) {
stringstream liness(line);
getline(liness path separator);
getline(liness classlabel);
if (!path.empty() && !classlabel.empty()) {
images.push_back(imread(path 0));
labels.push_back(atoi(classlabel.c_str()));
}
}
}
int main()
{
//读取你的CSV文件路径.
//string fn_csv = string(argv[1]);
string fn_csv = “at.txt“;
// 2个容器来存放图像数据和对应的标签
vector images;
vector labels;
// 读取数据. 如果文件不合法就会出错
// 输入的文件名已经有了.
try
{
read_csv(fn_csv images labels);
}
catch (cv::Exception& e)
{
cerr << “Error opening file ““ << fn_csv << ““. Reason: “ << e.msg << endl;
// 文件有问题,我们啥也做不了了,退出了
exit(1);
}
// 如果没有读取到足够图片,也退出.
if (images.size() <= 1) {
string error_message = “This demo needs at least 2 images to work. Please add more images to your data set!“;
CV_Error(CV_StsError error_message);
}
// 下面的几行代码仅仅是从你的数据集中移除最后一张图片
//[gm:自然这里需要根据自己的需要修改,他这里简化了很多问题]
Mat testSample = images[images.size() - 1];
int testLabel = labels[labels.size() - 1];
images.pop_back();
labels.pop_back();
// 下面几行创建了一个特征脸模型用于人脸识别,
// 通过CSV文件读取的图像和标签训练它。
// T这里是一个完整的PCA变换
//如果你只想保留10个主成分,使用如下代码
// cv::createEigenFaceRecognizer(10);
//
// 如果你还希望使用置信度阈值来初始化,使用以下语句:
// cv::createEigenFaceRecognizer(10 123.0);
//
// 如果你使用所有特征并且使用一个阈值,使用以下语句:
// cv::createEigenFaceRecognizer(0 123.0);
Ptr model = createEigenFaceRecognizer();
//Ptr model = createEigenFaceRecognizer();
model->train(images labels);
model->save(“MyFacePCAModel.xml“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 125440 2018-03-22 10:22 训练模型Debug训练模型.exe
文件 815336 2018-03-22 10:22 训练模型Debug训练模型.ilk
文件 1608704 2018-03-22 10:22 训练模型Debug训练模型.pdb
文件 57671680 2018-05-30 23:41 训练模型ipch训练模型-f1021360训练模型-96bc5428.ipch
文件 15039 2018-03-15 20:16 训练模型训练模型at.txt
文件 690 2018-03-22 10:22 训练模型训练模型Debugcl.command.1.tlog
文件 18564 2018-03-22 10:22 训练模型训练模型DebugCL.read.1.tlog
文件 396 2018-03-22 10:22 训练模型训练模型DebugCL.write.1.tlog
文件 2 2018-03-22 10:22 训练模型训练模型Debugli
文件 2 2018-03-22 10:22 训练模型训练模型Debugli
文件 2 2018-03-22 10:22 训练模型训练模型Debugli
文件 2 2018-03-22 10:22 训练模型训练模型Debugli
文件 2 2018-03-22 10:22 训练模型训练模型Debugli
文件 2 2018-03-22 10:22 训练模型训练模型Debugli
文件 3198 2018-03-22 10:22 训练模型训练模型Debugli
文件 9984 2018-03-22 10:22 训练模型训练模型Debugli
文件 858 2018-03-22 10:22 训练模型训练模型Debugli
文件 424217 2018-03-22 10:22 训练模型训练模型Debugmian.obj
文件 390 2018-03-22 10:22 训练模型训练模型Debugmt.command.1.tlog
文件 450 2018-03-22 10:22 训练模型训练模型Debugmt.read.1.tlog
文件 346 2018-03-22 10:22 训练模型训练模型Debugmt.write.1.tlog
文件 542 2018-03-22 10:22 训练模型训练模型Debug
c.command.1.tlog
文件 422 2018-03-22 10:22 训练模型训练模型Debug
c.read.1.tlog
文件 326 2018-03-22 10:22 训练模型训练模型Debug
c.write.1.tlog
文件 478208 2018-03-22 10:22 训练模型训练模型Debugvc100.idb
文件 978944 2018-03-22 10:22 训练模型训练模型Debugvc100.pdb
文件 2604 2018-03-22 10:21 训练模型训练模型Debug训练模型.Build.CppClean.log
文件 406 2018-03-22 10:22 训练模型训练模型Debug训练模型.exe.em
文件 472 2018-03-22 10:22 训练模型训练模型Debug训练模型.exe.em
文件 381 2018-03-22 10:22 训练模型训练模型Debug训练模型.exe.intermediate.manifest
............此处省略465个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)