• 大小: 18.22MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-04
  • 语言: 其他
  • 标签: 人脸识别  opencv  

资源简介

利用opencv进行人脸识别,包括人脸检测+特征提取 最常见的人脸识别方法采用的是:人脸检测+人脸对齐+特征提取+识别,本文方法没有采用人脸对齐,因为本来opencv提取的特征效果就不好,只是参考玩玩。

资源截图

代码片段和文件信息

#include “FaceDetect.h“

void read_csv(const string& filename cv::vector& images cv::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()) {
Mat image = imread(path 1);
Mat face = FaceDetect(image);
/*Mat facegray;
cvtColor(face facegray CV_BGR2GRAY);*/
images.push_back(face);
labels.push_back(atoi(classlabel.c_str()));
}
}
}
cv::Mat FaceToOne(cv::Mat source)//归一化处理函数
{

cv::equalizeHist(source source);//直方图均衡
cv::resize(source source cv::Size(92 112));//裁剪
cv::Mat Mask = cv::imread(“mask.jpg“ 0);
cv::Mat changedMask;
source.copyTo(changedMask Mask);
return changedMask;
}

Mat FaceDetect(Mat& frame)//脸是否存在
{
Mat gray error;
cvtColor(frame gray CV_BGR2GRAY);
int * pResults = NULL;
pResults = facedetect_frontal((unsigned char*)(gray.ptr(0)) gray.data gray.cols gray.rows gray.step
1.2f 5 24);
//pResults = facedetect_frontal_tmp((unsigned char*)(gray.ptr(0)) gray.cols gray.rows gray.step 1.2f 5 24);
int peopleNUM = (pResults ? *pResults : 0);
float Area = 0.0f;

Rect MaxRect(0000);
for (int i = 0; i < peopleNUM; i++)//代表有几张人脸(pResults ? *pResults : 0)
{
short * p = ((short*)(pResults + 1)) + 6 * i;
float area = p[2] * p[3];
if(area > Area)
{
Area = area;
Rect opencvRect(p[0] p[1] p[2] p[3]);
MaxRect = opencvRect;
}
}
if (0 != MaxRect.area())
{
cv::rectangle(frame MaxRect Scalar(255 0 0) 2);
Mat pic = gray(MaxRect);//感觉加了mask以后效果并不好
Mat pic_resize;
cv::resize(pic pic_resize cv::Size(100 100));
 /*cvtColor(pic pic CV_BGR2GRAY);
return FaceToOne(pic);*/
return pic_resize;
}
else
return error;
}

Ptr  GetTrainModel(string fn_csv)//输入CSV文件的路径名
{
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);
}
Ptr model = createLBPHFaceRecognizer();//创建人脸识别类 可修改 LBPHFace、EigenFace、FisherFace
model->train(images labels);
return model;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-10-12 16:37  FaceRecognition_Opencv\
     目录           0  2017-10-12 15:08  FaceRecognition_Opencv\.vs\
     目录           0  2017-10-12 15:08  FaceRecognition_Opencv\.vs\FaceRecognition_Opencv\
     目录           0  2017-10-12 15:08  FaceRecognition_Opencv\.vs\FaceRecognition_Opencv\v14\
     文件       26112  2017-10-12 16:37  FaceRecognition_Opencv\.vs\FaceRecognition_Opencv\v14\.suo
     目录           0  2017-10-12 16:38  FaceRecognition_Opencv\FaceRecognition_Opencv\
     文件        2877  2017-10-12 16:25  FaceRecognition_Opencv\FaceRecognition_Opencv\FaceDetect.cpp
     文件         242  2017-10-12 16:32  FaceRecognition_Opencv\FaceRecognition_Opencv\FaceDetect.h
     文件         845  2017-10-12 16:23  FaceRecognition_Opencv\FaceRecognition_Opencv\FaceRecognition.cpp
     文件        8905  2017-10-12 16:09  FaceRecognition_Opencv\FaceRecognition_Opencv\FaceRecognition_Opencv.vcxproj
     文件        1173  2017-10-12 15:55  FaceRecognition_Opencv\FaceRecognition_Opencv\FaceRecognition_Opencv.vcxproj.filters
     文件         165  2017-10-12 15:08  FaceRecognition_Opencv\FaceRecognition_Opencv\FaceRecognition_Opencv.vcxproj.user
     文件          68  2017-10-12 16:17  FaceRecognition_Opencv\FaceRecognition_Opencv\face.csv
     文件     9933312  2017-04-14 09:13  FaceRecognition_Opencv\FaceRecognition_Opencv\libfacedetect-x64.dll
     文件       17297  2017-09-14 15:18  FaceRecognition_Opencv\FaceRecognition_Opencv\mask.jpg
     目录           0  2017-10-12 16:08  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\
     目录           0  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\
     文件      814234  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceDetect.obj
     目录           0  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\
     文件        1430  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\CL.command.1.tlog
     文件       33240  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\CL.read.1.tlog
     文件        2286  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\CL.write.1.tlog
     文件         208  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\FaceRecognition_Opencv.lastbuildstate
     文件        2490  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\link.command.1.tlog
     文件        5490  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\link.read.1.tlog
     文件         796  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceReco.D22FE948.tlog\link.write.1.tlog
     文件      302873  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceRecognition.obj
     文件         706  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\FaceRecognition_Opencv.log
     文件      912384  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\vc140.idb
     文件     1601536  2017-10-12 16:34  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Debug\vc140.pdb
     目录           0  2017-10-12 16:00  FaceRecognition_Opencv\FaceRecognition_Opencv\x64\Release\
............此处省略44个文件信息

评论

共有 条评论