normalize in fimg2text
This commit is contained in:
		
							parent
							
								
									268a73ceb5
								
							
						
					
					
						commit
						583151302a
					
				| @ -1,5 +1,6 @@ | ||||
| /*
 | ||||
|  *	converting a floatimg to a machinable text file | ||||
|  *	an ugly software from tTh - february 2021 | ||||
|  */ | ||||
| 
 | ||||
| #include  <stdio.h> | ||||
| @ -46,7 +47,37 @@ for (y=0; y<src->height; y+=steps) { | ||||
| return 0; | ||||
| } | ||||
| /* ------------------------------------------------------------------------- */ | ||||
| int convertir_fimg_en_machinable(char *srcname, char *dstname, int steps) | ||||
| static int normalize(FloatImg *pimg, float vmax) | ||||
| { | ||||
| float		mmv[6], maxi, coef; | ||||
| int		foo, sz, idx; | ||||
| 
 | ||||
| // #if DEBUG_LEVEL
 | ||||
| fprintf(stderr, ">>> %s ( %p %g )\n", __func__, pimg, vmax); | ||||
| // #endif
 | ||||
| 
 | ||||
| foo = fimg_get_minmax_rgb(pimg, mmv); | ||||
| fimg_print_minmax(mmv, "norm it ?"); | ||||
| 			maxi = mmv[1]; | ||||
| if (mmv[3] > maxi)	maxi = mmv[3]; | ||||
| if (mmv[5] > maxi)	maxi = mmv[5]; | ||||
| fprintf(stderr, "maximum = %f\n", maxi); | ||||
| coef = vmax / maxi; | ||||
| fprintf(stderr, "coef    = %f\n", coef); | ||||
| 
 | ||||
| sz = pimg->width * pimg->height; | ||||
| 
 | ||||
| for (idx=0; idx<sz; idx++) { | ||||
| 	pimg->R[idx] *= coef; | ||||
| 	pimg->G[idx] *= coef; | ||||
| 	pimg->B[idx] *= coef; | ||||
| 	} | ||||
| 
 | ||||
| return 0; | ||||
| } | ||||
| /* ------------------------------------------------------------------------- */ | ||||
| int convertir_fimg_en_machinable(char *srcname, char *dstname, | ||||
| 					int steps, float norm) | ||||
| { | ||||
| int		foo, infos[3]; | ||||
| FloatImg	fimg; | ||||
| @ -78,6 +109,10 @@ if (foo) { | ||||
| if (verbosity) { | ||||
| 	fimg_describe(&fimg, srcname); | ||||
| 	} | ||||
| if (norm > 0.0) { | ||||
| 	fprintf(stderr, "normalize %p\n", &fimg); | ||||
| 	foo = normalize(&fimg, norm); | ||||
| 	} | ||||
| 
 | ||||
| foo = export_as_machinable(&fimg, dstname, steps, 0); | ||||
| 
 | ||||
| @ -88,12 +123,12 @@ return 0; | ||||
| /* ------------------------------------------------------------------------- */ | ||||
| void help(int k) | ||||
| { | ||||
| 
 | ||||
| puts("usage:\n\tfimg2text [options] foo.fimg > bar.csv"); | ||||
| puts("options:"); | ||||
| puts("\t-v\tincrease verbosity"); | ||||
| puts("\t-n 3.14\tnormalize picture"); | ||||
| puts("\t-s N\nsteps on x & y"); | ||||
| if (verbosity) fimg_print_version(1); | ||||
| 
 | ||||
| exit(0); | ||||
| } | ||||
| /* ------------------------------------------------------------------------- */ | ||||
| @ -102,12 +137,14 @@ int main(int argc, char *argv[]) | ||||
| { | ||||
| int		foo, opt; | ||||
| int		steps = 16; | ||||
| float		norm_val = 222.0;	/* < 0 : don't normalize */ | ||||
| 
 | ||||
| while ((opt = getopt(argc, argv, "hs:v")) != -1) { | ||||
| 	switch(opt) { | ||||
| 		case 'v':	verbosity++;		break; | ||||
| 		case 'h':	help(1);		exit(1); | ||||
| 		case 's':	steps = atoi(optarg);	break; | ||||
| 		case 'v':	verbosity++;			break; | ||||
| 		case 'h':	help(1);			exit(1); | ||||
| 		case 's':	steps = atoi(optarg);		break; | ||||
| 		case 'n':	norm_val = atof(optarg);	break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| @ -116,7 +153,7 @@ if (1 != argc-optind) { | ||||
| 	exit(1); | ||||
| 	} | ||||
| 
 | ||||
| foo = convertir_fimg_en_machinable(argv[optind], "-", steps); | ||||
| foo = convertir_fimg_en_machinable(argv[optind], "-", steps, norm_val); | ||||
| if (foo) | ||||
| 	fprintf(stderr, "%s : got a %d from convertor\n", argv[0], foo); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 le vieux
						le vieux