1.参考java api中的File的用法
从目录中读取图片的名字,获取训练图片的名字
ArrayList<String> imageList = new ArrayList<String>();
File file = new File(filePath);
if (file.isDirectory()) {
String[] fileName = file.list();
for (int i = 0; i < fileName.length; i++) {
imageList.add(filePath+"/"+fileName[i]);
}
}else {
return null;
}
2.加载训练图片
IpIImage是openCV库中一个很重要的结构体,库中的我图像都是保存为这个结构体后再进行操作的。用cvLoadImage来获得。如cvLoadImage(image[i], 0);
CvMat* cvCreateMat(int rows, int cols, int type); type: 矩阵元素类型. 格式为CV_<bit_depth>(S|U|F)C<number_of_channels>,例如: CV_8UC1 表示8位无符号单通道矩阵, CV_32SC2表示32位有符号双通道矩阵.
// 将图像数据转换为矩阵保存
CvMat mat = cvCreateMat(image.height(),image.width(),CV_32FC1);
cvConvert(image, mat);
PCA(principal component analysis)翻译过来就是主分量分析,是一种流行的数据降维方法。通过数据降维可以实现数据的压缩,同时方便数据分析和提高算法的处理速度。PCA的原理就是通过正交变换,最大化样本协方差阵的对角元素,最小化非对角元素。
在OPENCV