opencv人脸识别训练

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/moyul/article/details/51008411
一开始我运用人脸库训练出一个xml文件,后来新增人脸时候需要将新人继续拿来训练,需要将训练的特征信息加在原来xml文件里面。如果程序不关闭是可以将新人特征信息加到xml文件里的。比如,原来的xml文件为face.xml;现在采集了一些人脸,需要将这些人脸的特征信息提取加入到face.cml;然后下次load这个face.xml进行人脸识别。现在就是怎么将这些人脸加入原来的xml文件呢?
这个是全局变量定义:
static vector<Mat> images;//头像集
static vector<int> labels;//标签集


训练:
model->load("face0.xml"); 
try 
{//现在的需要加入的图片入栈。调用程序loadFaceImg(train_csv, images, labels);//train_csv图片路径
loadFaceImg(train_csv, images, labels);
stringstream s;
s<<num;
cout<<"加载"+s.str()+"个人脸图片完成"<<endl;

catch (cv::Exception& e) 
{
cerr << "Error opening file \"" << train_csv << "\". Reason: " << e.msg << endl;
}
// Quit if there are not enough images for this demo.
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);
}

//初始化提取员工特征
model->train(images, labels);

model->save("face0.xml");//保存特征信息
展开阅读全文

没有更多推荐了,返回首页