一个数据输出问题!

dangerxiaoxin 2009-05-12 09:20:22
我是用c的程序处理图像,但是在运行窗口里生成几千上万个数据,我想把这些数据生成图像,但是首先怎么把数据从窗口输出呢!我运行的平台是VC ++ 2008!有这种功能吗?
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
风老二 2009-05-13
  • 打赏
  • 举报
回复
不用改源码
生成后,你在cmd下执行就可以把输出重定向到文本

比如你程序名叫a.exe,那你在这个程序的目录下建个文本文档,里边写上a.exe >1.txt,然后保存改名为a.cmd,双击执行后会出现一个1.txt,就是你要的输出结果了
dangerxiaoxin 2009-05-13
  • 打赏
  • 举报
回复
就是想把上面程序的结果输出txt文档,我怎么也该不好,能帮我看看哪里有问题吗?
dangerxiaoxin 2009-05-13
  • 打赏
  • 举报
回复

int main(int argc, char *argv[])
{
char *rtn = "Rauschdetektion";
int err = 0;
char *in_name1 = NULL;
char *out_name = NULL;
char file_name[50]={" "};
int format1, formato=0; /* format of PNM images */
int x, y;
int height1, width1; /* size of input image 1 */
int v_flag = 0; /* verbose flag */
int ascii_flag = 0; /* controls output format ASCII or RAW */
int *in_ptr = NULL;
int *out_ptr = NULL;
unsigned long *mw_ptr = NULL;
int n_start = 0 ;
int n_end ;
int n;
double var, mw;
unsigned long count;


FILE *in1, *out;
FILE **in;
FILE *fp;
xelval maxval1, maxvalo; /* xelval is 'unsigned int' */
xel **xelarray1;
xel ***xelarray;
IMAGE image, *im;

fprintf( stderr, "\n####################################");
fprintf( stderr, "\nStart, %s\n", title);


im = ℑ
while (( optstr =
( char*)get_option( argc, argv)) != NULL)
{
switch (optstr[1])
{
case 'v':
v_flag = 1;
break;
case 'i':
in_name1 = OptArg;
break;
case 'o':
out_name = OptArg;
break;
case 's':
n_start = atoi(OptArg);
break;
case 'e':
n_end = atoi(OptArg);
break;
default:
usage( argv[0]);
err = 11;
goto endfunct;
}
}

/* check whether all mandatory options were given */
err = check_opt( argv[0]);
if (err) goto endfunct;

pnm_init(&argc, argv); /* not sure, whether this is required */


in = (FILE**)malloc( 42 * sizeof(FILE*));
if (in == NULL )
{
fprintf( stderr, "\n%s: Could not allocate in!\n", rtn);
err = 1;
goto endfunct;
}
xelarray = (xel***)malloc( 42 * sizeof(xel**));
if (xelarray == NULL )
{
fprintf( stderr, "\n%s: Could not allocate xelarray!\n", rtn);
err = 1;
goto endfunct;
}
in[0] = pm_openr( in_name1);

/* open the first image */
in1 = pm_openr( in_name1);

/* allocate memory for one images */
xelarray[0] = pnm_readpnm( in[0], &width1, &height1, &maxval1, &format1);

xelarray1 = pnm_readpnm( in1, &width1, &height1, &maxval1, &format1);


for( n = n_start ; n <= n_end ; n ++)
{
sprintf(in_name1, "IMG_%03d_G.pgm", n);
in[n] = pm_openr(in_name1);
xelarray[n] = pnm_readpnm( in[n],&width1, &height1, &maxval1, &format1);
}

if (v_flag)
{
fprintf( stderr, "\n image ");
fprintf( stderr, "\n width : %d", width1);
fprintf( stderr, "\n height: %d", height1);
fprintf( stderr, "\n maxval: %d", maxval1);
fprintf( stderr, "\n format: %d", format1);
fprintf( stderr, "\n MAGIC1: %c", format1/256);
fprintf( stderr, "\n MAGIC2: %c", format1%256);
fprintf( stderr, "\n");
}

/* open the result image */
out = pm_openw( out_name);
maxvalo = 0;
formato = format1;

/* Zeiger auf width , height und size. size ist abhaengig von den detektierten Bilddatein */

im->height = height1;
im->width = width1;
im->size = height1 * width1;


in_ptr = (int*)malloc( im->size * sizeof(int));/* int bezeichnet der Zeiger int* */
out_ptr = (int*)malloc( im->size * sizeof(int));

if (in_ptr == NULL || out_ptr == NULL )
{
fprintf( stderr, "\n%s: Could not allocate arrays!\n", rtn);
err = 1;
goto endfunct;
}


/* process data */


printf("\nsave path:");
scanf("%s",&file_name);
fgets(file_name,49, stdin);

fp = fopen(file_name, "w");

if(fp == NULL)
{
printf("Fehler");
exit(1);
}
else

for ( y = 0; y < height1; y++) /* Positonen von Bildpunkten*/
{
for ( x = 0; x < width1; x++)
{


mw = var = count = 0 ;
count = y * width1 + x;

for( n = n_start ; n <= n_end ; n ++)
{
/* fprintf( stderr, "\n%5d ",xelarray[n][y][x].b);*/

mw += xelarray[n][y][x].b; /* Summe aller Helligkeitswerte */
var += xelarray[n][y][x].b * xelarray[n][y][x].b;


}



mw /= n_end - n_start +1 ;
var = sqrt( var/ (n_end - n_start +1) - mw*mw);

}

fprintf(fp,"\n%3d%3d%7.2f%7.2f",y, x, mw, var);
fclose(fp);


}
风老二 2009-05-13
  • 打赏
  • 举报
回复
cmd 下输入你的"程序名>1.txt"
dangerxiaoxin 2009-05-12
  • 打赏
  • 举报
回复
也不是非要运行窗口,只是我想得到程序运行后的数据,我只会从窗口拷贝,不过数据太多,受不了了。1024*1536的图片,就这么多pixels,每个pixels对应一个灰度值,对应一个方差!
  • 打赏
  • 举报
回复
这么多数据要输出到窗口?用来干吗?
考虑重定向到文件吧

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧