⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warp.cc

📁 torch tracking code, it is a good code
💻 CC
字号:
const char *help = "\progname: warp.cc\n\code2html: This program reads a ppm image and 2 sets of landmark points and warp the image.\n\version: Torch3 vision2.0, 2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "ImageGray.h"#include "xtprobeImageDiskXFile.h"#include "ipWarp.h"#include "DiskXFile.h"#include "CmdLine.h"using namespace Torch;int main(int argc, char **argv){	char *image_filename;	char *ldm_in_filename;	char *ldm_out_filename;	bool verbose;    		CmdLine cmd;	cmd.setBOption("write log", false);  	cmd.info(help);  	cmd.addText("\nArguments:");  	cmd.addSCmdArg("image filename", &image_filename, "image filename");  	cmd.addSCmdArg("input landmark filename", &ldm_in_filename, "input landmark filename");  	cmd.addSCmdArg("output landmark filename", &ldm_out_filename, "output landmark filename");  	cmd.addText("\nOptions:");  	cmd.addBCmdOption("-verbose", &verbose, false, "verbose");	cmd.read(argc, argv);		Image *image_in = NULL;	Image *image_out = NULL;	ImageDiskXFile *image_file = NULL;	image_in = new ImageGray();	image_file = new xtprobeImageDiskXFile(image_filename, "r");	if(!image_in->loadImageXFile(image_file))		error("Impossible to load the image");	delete image_file;	if(verbose)	{		print("Image info:\n");		print("   width = %d\n", image_in->width);		print("   height = %d\n", image_in->height);		print("   format = %s (%d)\n", image_in->coding, image_in->n_planes);	}	DiskXFile *file_in = new DiskXFile(ldm_in_filename, "r");	DiskXFile *file_out = new DiskXFile(ldm_out_filename, "r");	int n_ldm;	file_in->scanf("%d", &n_ldm);	sPoint2D *ldm_in = new sPoint2D [n_ldm];	//sPoint2D *ldm_in = new sPoint2D [n_ldm+image_in->width*2+(image_in->height-2)*2];		if(verbose) print("n_ldm in = %d\n", n_ldm);		for(int i = 0 ; i < n_ldm ; i++)	{	   	int x, y;				file_in->scanf("%d", &x);		file_in->scanf("%d", &y);		ldm_in[i].x = x;		ldm_in[i].y = y;		if(verbose) print("   ldm[%4d] = %g %g\n", i, ldm_in[i].x, ldm_in[i].y);	}	/*	for(int i = 0 ; i < image_in->width ; i++)	{		ldm_in[n_ldm].x = i;		ldm_in[n_ldm].y = 0;				n_ldm++;		ldm_in[n_ldm].x = i;		ldm_in[n_ldm].y = image_in->height-1;				n_ldm++;	}	   	for(int i = 1 ; i < image_in->height-1 ; i++)	{		ldm_in[n_ldm].x = 0;		ldm_in[n_ldm].y = i;				n_ldm++;				ldm_in[n_ldm].x = image_in->width-1;		ldm_in[n_ldm].y = i;				n_ldm++;	}	*/	file_out->scanf("%d", &n_ldm);	sPoint2D *ldm_out = new sPoint2D [n_ldm];	//sPoint2D *ldm_out = new sPoint2D [n_ldm+image_in->width*2+(image_in->height-2)*2];		if(verbose) print("n_ldm out = %d\n", n_ldm);	for(int i = 0 ; i < n_ldm ; i++)	{	   	int x, y;				file_out->scanf("%d", &x);		file_out->scanf("%d", &y);		ldm_out[i].x = x;		ldm_out[i].y = y;		if(verbose) print("   ldm[%4d] = %g %g\n", i, ldm_out[i].x, ldm_out[i].y);	}	   	/*	for(int i = 0 ; i < image_in->width ; i++)	{		ldm_out[n_ldm].x = i;		ldm_out[n_ldm].y = 0;				n_ldm++;		ldm_out[n_ldm].x = i;		ldm_out[n_ldm].y = image_in->height-1;				n_ldm++;	}	   	for(int i = 1 ; i < image_in->height-1 ; i++)	{		ldm_out[n_ldm].x = 0;		ldm_out[n_ldm].y = i;				n_ldm++;				ldm_out[n_ldm].x = image_in->width-1;		ldm_out[n_ldm].y = i;				n_ldm++;	}	*/	ipCore *warp = NULL;	warp = new ipWarp(image_in->width, image_in->height, "gray", n_ldm, ldm_in, ldm_out);	warp->setBOption("verbose", verbose);	warp->process(image_in);		image_out = new ImageGray();	image_out->setBOption("verbose", verbose);	image_out->copyFrom(image_in->width, image_in->height, warp->seq_out->frames[0], "gray");	image_out->save("warp.pgm");	delete [] ldm_out;	delete [] ldm_in;	delete file_in;	delete file_out;	delete warp;	delete image_out;	delete image_in;	return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -