怎样使用OpenCV进行人脸识别

怎样使用OpenCV进行人脸识别,第1张

1、首先就是数据的准备,你要从网络上下载一些人脸库,后面用来训练人脸识别模型。人脸检测模型opencv是自带的,但是识别模型需要自己训练。下载人脸库之后需要对人脸进行标记,这是一个繁琐的工作,不过网上有脚本或者自己写个程序简化工作量。

2、把数据标记好之后就是opencv的事情。训练的函数非常简单。只有下面这三句:

Ptr model = createEigenFaceRecognizer();

model->train(images, labels);

model->save("MyFacePCAModelxml");

3、然后打开摄像头进行人脸检测,就是框出人脸的位置。人脸检测模型是opencv自带的。

CascadeClassifier cascade;

cascadeload("haarcascade_frontalface_altxml");

这是加载的方法。

cascadedetectMultiScale(gray, faces,

11, 2, 0

//|CV_HAAR_FIND_BIGGEST_OBJECT

//|CV_HAAR_DO_ROUGH_SEARCH

| CV_HAAR_SCALE_IMAGE,

Size(30, 30));

这是检测的方法。这里检测得到的就是一个一个的人脸的矩形框,然后用画矩形的方法把它们画出来就行了。

4、然后就是对检测到的人脸进行识别了,用我们刚才训练好的人脸模型。加载:

Ptr modelPCA = createEigenFaceRecognizer();

modelPCA->load("MyFacePCAModelxml");

预测:

int predictPCA = 0;

if (facerows >= 120)

{

resize(face, face_test, Size(92, 112));

}

if (!face_testempty())

{

predictPCA = modelPCA->predict(face_test);

}

你不是都已经说清楚流程了 不知道你需要啥帮助的。

yale数据不知道存的是什么特征, pca降维到2维的话,这样的特征空间描述度足以区分不同人脸吗,我没用过,只是单纯的疑问

Fisher分类器没用过,印象中好像和pca,lda也是有一定关系的,好像也是一种映射降维,好像是很简单的一种分类器,这样的分类器的话,效果好吗。(如果以你的2维特征空间来说好像没啥问题。)

如果是二维人脸识别的话,可以考虑先子图分割,然后创建子图权重系数矩,然后子图矩阵取高特征值,或者对矩阵用dct取大特征,用特征值和权重矩生成特征空间。然后用模糊神经网络对数据进行训练 得到识别系统 。    或者也可以用bp+遗传算法, 上学时候用的orl数据库 好像识别率能到90多点。

以上就是关于怎样使用OpenCV进行人脸识别全部的内容,包括:怎样使用OpenCV进行人脸识别、【人脸识别】用pca降维+fisher分类器+yale数据集,用matlab实现、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10129491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存