📄 pgmlist2bindata.cc
字号:
const char *help = "\progname: pgmlist2bindata.cc\n\code2html: This program creates a bindata file from a list of pgm images.\n\version: Torch3 vision2.0, 2004\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#define NBFILES_MAX 5000#include "DiskXFile.h"#include "FileListCmdOption.h"#include "ImageGray.h"#include "CmdLine.h"using namespace Torch;int main(int argc, char *argv[]){ char *filename_out; bool norm; bool verbose; FileListCmdOption filelist("file name", "the list files or one data file"); filelist.isArgument(true); CmdLine cmd; cmd.setBOption("write log", false); cmd.info(help); cmd.addText("\nArguments:"); cmd.addCmdOption(&filelist); cmd.addSCmdArg("filename out", &filename_out, "output bindata filename"); cmd.addText("\nOptions:"); cmd.addBCmdOption("-norm", &norm, false, "normalize images"); cmd.addBCmdOption("-verbose", &verbose, false, "verbose"); cmd.read(argc, argv); // if(verbose) { print(" + n_filenames = %d\n", filelist.n_files); for(int i = 0 ; i < filelist.n_files ; i++) print(" filename[%d] = %s\n", i, filelist.file_names[i]); } if(filelist.n_files > NBFILES_MAX) { error("Cannot merge more than %d files", NBFILES_MAX); return 1; } ImageGray *grayimage = NULL; DiskXFile *fileout = NULL; if(verbose) print("Merging %d files :\n", filelist.n_files); fileout = new DiskXFile(filename_out, "w"); if(fileout == NULL) { error("Opening BinData file %s", filename_out); return 1; } // Reading headers int P = filelist.n_files; int n_inputs; for(int i = 0 ; i < filelist.n_files ; i++) { grayimage = new ImageGray(filelist.file_names[i]); if(verbose) { print("Reading image file (%s)\n", filelist.file_names[i]); print(" width = %d\n", grayimage->width); print(" height = %d\n", grayimage->height); } if(i == 0) n_inputs = grayimage->width * grayimage->height; else { if(n_inputs != grayimage->width * grayimage->height) { delete fileout; delete grayimage; error("Files does not have the same size"); return 1; } } delete grayimage; grayimage = NULL; } fileout->write(&P, sizeof(int), 1); fileout->write(&n_inputs, sizeof(int), 1); if(verbose) { print("\n"); print("Writing bindata file :\n"); print(" n_inputs : %d\n", n_inputs); print(" n_patterns : %d\n", P); } for(int i = 0 ; i < filelist.n_files ; i++) { grayimage = new ImageGray(filelist.file_names[i]); if(norm) { for(int j = 0 ; j < n_inputs ; j++) { real z_ = grayimage->data[j]; z_ /= 255.0; int a = (int) (z_ * 255.0); int b = (int) grayimage->data[j]; if(a != b) error("%d != %d", a, b); grayimage->data[j] = z_; } } fileout->write(grayimage->data, sizeof(real), n_inputs); delete grayimage; grayimage = NULL; } delete fileout; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -