• 大小: 40.04MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-30
  • 语言: 其他
  • 标签: opencv  

资源简介

opencv学习之人脸识别-代码加素材加opencv配置路径; test文件夹内是待测试的图片,train文件夹内是训练出来的图片; namelist路径要根据你实际的路径,使用notepad++更改即可;

资源截图

代码片段和文件信息

///////////////////////////////////////////////////
//  本程序分为两个部分
//  第一部分为根据自己的图片数据库训练模型
//  第二部分为调用训练后的模型来测试单幅图片
//  在程序运行之前,需要将图片进行前期处理
//  将图片的格式转成.txt文档的形式
//  具体可参考博文:http://blog.csdn.net/xingchenbingbuyu/article/details/51407336


//第一部分
#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()) {
case 1:
//归一化函数 模式的最小值 最大值 归一化的类型:线性归一化
cv::normalize(_src dst 0 255 NORM_MINMAX CV_8UC1);
break;
case 
3:
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 = “name_list.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 model2 = createLBPHFaceRecognizer();
///////////////////////////////////////////////////////////////////////////
//   训练模型部分 调用库函数,之后xml文件的大小是42M;真大;
model2->train(images labels);
model2->save(“MyFaceLBPHModel.xml“)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-07-09 09:22  faceTest\
     目录           0  2018-07-06 10:39  faceTest\.vs\
     目录           0  2018-07-06 10:39  faceTest\.vs\faceTest\
     目录           0  2018-07-06 10:39  faceTest\.vs\faceTest\v14\
     文件       38912  2018-07-09 09:22  faceTest\.vs\faceTest\v14\.suo
     目录           0  2018-07-09 09:18  faceTest\Debug\
     文件      152064  2018-07-09 09:18  faceTest\Debug\faceTest.exe
     文件      779912  2018-07-09 09:18  faceTest\Debug\faceTest.ilk
     文件     2961408  2018-07-09 09:18  faceTest\Debug\faceTest.pdb
     目录           0  2018-07-09 09:17  faceTest\faceTest\
     目录           0  2018-07-09 09:17  faceTest\faceTest\Debug\
     文件         185  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.log
     目录           0  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\
     文件         576  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\CL.command.1.tlog
     文件       21306  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\CL.read.1.tlog
     文件         496  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\CL.write.1.tlog
     文件         203  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\faceTest.lastbuildstate
     文件        2004  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\link.command.1.tlog
     文件        6012  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\link.read.1.tlog
     文件         472  2018-07-09 09:18  faceTest\faceTest\Debug\faceTest.tlog\link.write.1.tlog
     文件      554369  2018-07-09 09:18  faceTest\faceTest\Debug\learn.obj
     文件      748544  2018-07-09 09:18  faceTest\faceTest\Debug\vc140.idb
     文件     1585152  2018-07-09 09:17  faceTest\faceTest\Debug\vc140.pdb
     文件    48150951  2018-07-09 09:21  faceTest\faceTest\MyFaceLBPHModel.xml
     文件         774  2018-05-29 18:04  faceTest\faceTest\PropertySheetOpencv3.4.1X64.props
     文件         474  2018-07-07 13:40  faceTest\faceTest\biJi.h
     文件        6199  2018-07-07 13:40  faceTest\faceTest\faceTest.vcxproj
     文件        1063  2018-07-07 13:40  faceTest\faceTest\faceTest.vcxproj.filters
     文件        6383  2018-07-09 09:17  faceTest\faceTest\learn.cpp
     文件     7613641  2018-05-09 00:39  faceTest\faceTest\model.xml
     文件       21684  2018-07-09 09:06  faceTest\faceTest\name_list.txt
............此处省略336个文件信息

评论

共有 条评论