浅谈Openv中人脸识别类FaceRecognizer.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈Openv中人脸识别类FaceRecognizer opencv2.4版本中封装了可用于人脸识别的类FaceRecognizer,其对应代码在动态链接库opencv_contrib249d.dll中(我用的是opencv2.4.9版本),这个动态链接库在opencv安装目录下可以找到,要想使用FaceRecognizer,首先要保证上述动态链接库正确配置。在此关于opencv的配置问题多说几句,就是建议大家尽量使用VS2010及以上版本来配置opencv,因为在最新的opencv2.4.9版本中已经添加了对vs2010及以上版本的自动支持,无需再用CMaker进行编译了,配置简单可靠。我之前用的是VS2008版本,在自己编译opencv_contrib249d.dll这个库时总提示编译出错,如果你也遇到了这个问题,建议你换装vs2010版本吧,至于具体如何配置网上有很多教程,这里不再赘述。 FaceRecognizer这个类目前包含三种人脸识别方法:基于PCA变换的人脸识别(EigenFaceRecognizer)、基于Fisher变换的人脸识别(FisherFaceRecognizer)、基于局部二值模式的人脸识别(LBPHFaceRecognizer)。对于像我这样的人脸识别初学者,对人脸识别理论了解得不是很透彻,但并不影响对函数的使用,下面就EigenFaceRecognizer来详细的谈一下opencv人脸识别的实现。 首先简单说一下PCA变换原理。在人脸识别过程中,一般把图片看成是向量进行处理,高等数学中我们接触的一般都是二维或三维向量,向量的维数是根据组成向量的变量个数来定的,例如?就是一个二维向量,因为其有两个参量。而在将一幅图像抽象为一个向量的过程中,我们把图像的每个像素定为一维,对于一幅的普通图像来说,最后抽象为一个维的高维向量,如此庞大的维数对于后续图像计算式来说相当困难,因此有必要在尽可能不丢失重要信息的前提下降低图像维数,。数据库中有光照变化(中心光照、左侧光照、右侧光照)、表情变化(开心、正常、悲伤、瞌睡、惊讶、眨眼)、眼镜(戴眼镜或者没戴),且包含男性图片和女性图片,比较适合做人脸识别的仿真实验。唯一的不足就是照片中全部为外国人,如果你想开发出一套人脸识别系统在国内用,建议还是费点功夫自己建一个合适的人脸数据库吧。 人脸库确定之后需要进行训练,即让计算机“学习”这些人脸样本。这时面临的一个问题就是如何把训练样本读进内存中。opencv手册中明确说明EigenFaceRecognizer的训练函数的入口参数是一个图像容器,容器中包含所有训练图像。那么如何创建一个这样的容器并把训练样本全部放进去呢?方法有很多,我在实验中采用CSV文件读取方法。首先创建一个包含所有文件路径名的CSV文件,也就是一个文本文件。假设ORL数据库存放地址为:“E:\ORL”;在DOS窗口下输入命令:E:\ORLdir /b/s *.bmp at.txt,执行成功后发现在ORL文件夹下出现一个文本文件at.txt,里面内容如下(分号后面的标签是人为添加的): E:\ORL\s1\1.bmp;1 E:\ORL\s1\10.bmp;1 E:\ORL\s1\2.bmp;1 E:\ORL\s1\3.bmp;1 E:\ORL\s1\4.bmp;1 E:\ORL\s1\5.bmp;1 E:\ORL\s1\6.bmp;1 E:\ORL\s1\7.bmp;1 E:\ORL\s1\8.bmp;1 E:\ORL\s1\9.bmp;1 E:\ORL\s10\1.bmp;10 E:\ORL\s10\10.bmp;10 E:\ORL\s10\2.bmp;10 E:\ORL\s10\3.bmp;10 E:\ORL\s10\4.bmp;10 E:\ORL\s10\5.bmp;10 E:\ORL\s10\6.bmp;10 E:\ORL\s10\7.bmp;10 E:\ORL\s10\8.bmp;10 E:\ORL\s10\9.bmp;10 CSV文件创建成功后,可以在程序中读取文件了,网上有一段比较好的CSV读取代码,如下所示: void read_csv(const string filename, vectorMat images, vectorint labels, char separator =;) { std::ifstream file(filename.c_str(), ifstream::in);//c_str()函数可用可不用,无需返回一个标准C类型的字符串 if (!file) { string error_message =No valid input file was given, please check the

文档评论(0)

sjjd401 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档