AR faceDB 由MAT格式转换为图片格式
最近在写人脸识别的毕业论文,需要一些人脸的数据库,知名的人脸数据库有好多!我看的那篇论文它用到3个数据库,分别是ORL,AR,和Yale。
下这些数据库都比较难,ORL这个数据库是我以前下过的,我也忘了我是怎么下载的,AR这个数据库我在数据堂这个网站上下的,但是下的是matlab的MAT文件。我想用普通的图片浏览器打开这些图片看看它们都是怎样的,于是就用matlab编了个小程序让这个mat的人脸数据转换为图片。
AR人脸数据库与程序资源
程序思想:
MAT文件包含测试和训练的图片信息,由两个图片矩阵和类标矩阵组成。我将测试人脸跟训练人脸放到两个不同的文件夹下,再对每个人的不同图片放到一个文件夹下。
人脸矩阵是一个2580*700的矩阵,2580=64*43是一张图片的分辨率。
先用reshape将这个矩阵转换为一个3维的矩阵。然后再对每张照片按类标写入到文件系统中。
程序代码
clc; clear; load('AR_database_60_43.mat'); newTestFace = reshape(NewTest_DAT, 60,43,700); newTrainFace = reshape(NewTrain_DAT, 60,43,700); num = size(newTestFace,3); faceLabel = -1; for i = 1 : num if(faceLabel ~= testlabels(i)) faceLabel = testlabels(i); faceNum = 0; end faceNum = faceNum + 1; % there is no the floder if(exist(sprintf('test\\p%d',faceLabel),'dir') ~= 7) mkdir(sprintf('test\\p%d',faceLabel)); end imwrite(newTestFace(:,:,i),sprintf('test\\p%d\\%d.jpg',faceLabel,faceNum )); end faceLabel = -1; num = size(newTrainFace,3); for i = 1 : num if(faceLabel ~= trainlabels(i)) faceLabel = trainlabels(i); faceNum = 0; end faceNum = faceNum + 1; if(exist(sprintf('train\\p%d',faceLabel),'dir') == 7) mkdir(sprintf('train\\p%d',faceLabel)); end imwrite(newTrainFace(:,:,i),sprintf('train\\p%d\\%d.jpg',faceLabel,faceNum )); end
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。