资源简介
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\li
文件 6012 2018-07-09 09:18 faceTest\faceTest\Debug\faceTest.tlog\li
文件 472 2018-07-09 09:18 faceTest\faceTest\Debug\faceTest.tlog\li
文件 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.xm
文件 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.xm
文件 21684 2018-07-09 09:06 faceTest\faceTest\name_list.txt
............此处省略336个文件信息
相关资源
- vs2010编译的32位opencv+opencv_contrib3.4.1
- OpenCV-2.4.1&tbb;(x86)解压即用.zip
- 学习OpenCV(中文版高清PDF).zip
- opencv2.4.13 x64版
- opencv tbb
- OpenCV-2.0.0.tar.bz2
- Kinect2+opencv获取深度图
- VC OpenCV车牌识别
- CMake+opencv3.4编译时 Download: opencv_ffmp
- 毕业设计基于Opencv的车牌识别系统
- OpenCV3计算机视觉
- OpenCV4.2.0已编译好的32位库
- 张正友相机标定Opencv实现
- Qt_Opencv_Camera.rar
- opencv 运动物体跟踪检测
- 两篇基于OpenCV的硕士论文
- Opencv3.0 手写数字数别完整版本
- OpenTLD-master VS213 OpenCV 3.0版本源码
- calib_point
- VTK-6.3.0.tar.gz
- 基于Arcsoft2.0 linux版+opencv
- hog+svm性别识别源码
- Qt5.5.1读取大恒相机
- Opencv常用前景提取算法
- 基于OpenCV的车牌识别系统
- 贪心算法,opencv,主动轮廓模型,s
- Computer Vision with OpenCV 3 and Qt5 pdf + co
- opencv SVM训练检测车牌
- OpenCV_1.0.exe
- 车牌识别-opencv
评论
共有 条评论