📄 pca2pgm.cc
字号:
const char *help = "\progname: pca2pgm.cc\n\code2html: This program reads a PCA model and saves eigenfaces.\n\version: Torch3 vision2.0, 2003-2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "PCAMachine.h"#include "ImageGray.h"#include "CmdLine.h"using namespace Torch;int main(int argc, char *argv[]){ char *model_filename; int width, height; int n_eigenface; real variance; bool verbose; int verbose_level; CmdLine cmd; cmd.setBOption("write log", false); cmd.info(help); cmd.addText("\nArguments:"); cmd.addSCmdArg("model filename", &model_filename, "PCA model filename"); cmd.addICmdArg("width", &width, "width"); cmd.addICmdArg("height", &height, "height"); cmd.addText("\nOptions:"); cmd.addICmdOption("-eigenface", &n_eigenface, 2, "number of eigenface"); cmd.addRCmdOption("-variance", &variance, 0.95, "variance"); cmd.addBCmdOption("-verbose", &verbose, false, "verbose"); cmd.addICmdOption("-verbose_level", &verbose_level, 0, "verbose level"); cmd.read(argc, argv); int n_input = width * height; // PCAMachine *pca_machine = NULL; pca_machine = new PCAMachine(n_input); // print("Loading PCA model: %s ...\n", model_filename); pca_machine->load(model_filename, NULL); // pca_machine->setIOption("verbose_level", verbose_level); pca_machine->setROption("variance", variance); pca_machine->init(); float *eigenface = new float [n_input]; ImageGray *image = new ImageGray(width, height); image->copyFrom(width, height, pca_machine->Xm, "float", 1.0); image->save("mean.pgm"); for(int p = 0 ; p < n_eigenface ; p++) { if(verbose) print("Eigenvalue [%d] : %g\n", p, pca_machine->eigenvalues[p]); float min_ = 1000.0; float max_ = -1000.0; for(int i = 0 ; i < n_input ; i++) { eigenface[i] = pca_machine->eigenvectors[i][p]; if(eigenface[i] < min_) min_ = eigenface[i]; if(eigenface[i] > max_) max_ = eigenface[i]; } for(int i = 0 ; i < n_input ; i++) eigenface[i] = (eigenface[i] - min_) / (max_ - min_); image->copyFrom(width, height, eigenface, "float", 1.0); char str[256]; sprintf(str, "eigenface%04d.pgm", p); image->save(str); } // delete image; delete [] eigenface; delete pca_machine; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -