更新时间:2023-02-26 14:49:44
我根据我的$ C $上的 http://www.bytefish.de/blog/pca_in_opencv 。
以下是我做:
I based my code on the example at http://www.bytefish.de/blog/pca_in_opencv. Here's how I did this:
Vector trainingImages = new Vector();;
trainingImages.add(Highgui.imread("/sdcard/facedatabase/s1/1.pgm",0));
trainingImages.add(Highgui.imread("/sdcard/facedatabase/s1/2.pgm",0));
Mat x = (Mat) trainingImages.get(0);
int total = x.rows() * x.cols();
// build matrix (column)
// This matrix will have one col for each image and imagerows x imagecols rows
Mat mat = new Mat(total, trainingImages.size(), CvType.CV_32FC1);
for(int i = 0; i < trainingImages.size(); i++) {
Mat X = mat.col(i);
Mat c = (Mat) trainingImages.get(i);
c.reshape(1,total).convertTo(X, CvType.CV_32FC1);
}
Mat eigenVectors = new Mat();
Mat mean = new Mat();
Core.PCACompute(mat, mean, eigenVectors);