forked from tTh/FloatImg
a new "rescale" option in cumulfimgs
This commit is contained in:
parent
e6379f6338
commit
feafd2799d
|
@ -20,7 +20,7 @@
|
|||
* https://git.tetalab.org/tTh/FloatImg
|
||||
*/
|
||||
|
||||
#define FIMG_VERSION (198)
|
||||
#define FIMG_VERSION (201)
|
||||
#define RELEASE_NAME ("noname")
|
||||
|
||||
/* XXX add a test for stdint.h / uint32_t XXX */
|
||||
|
@ -233,7 +233,7 @@ int fimg_qsort_rgb_b(FloatImg *psrc, FloatImg *pdst, int notused);
|
|||
|
||||
/* module funcs/equalize.c */
|
||||
int fimg_equalize_compute(FloatImg *src, void *vptr, float vmax);
|
||||
int fimg_equalize(FloatImg *src, float vmax);
|
||||
int fimg_equalize(FloatImg *src, double vmax);
|
||||
|
||||
int fimg_mk_gray_from(FloatImg *src, FloatImg*dst, int k);
|
||||
int fimg_desaturate(FloatImg *src, FloatImg *dst, int notused);
|
||||
|
@ -285,6 +285,7 @@ int fimg_meanvalues(FloatImg *head, float means[4]);
|
|||
int fimg_to_gray(FloatImg *head);
|
||||
int fimg_add_cste(FloatImg *fi, float value);
|
||||
int fimg_mul_cste(FloatImg *fi, float value);
|
||||
int fimg_div_cste(FloatImg *fi, float value);
|
||||
int fimg_ajust_from_grab(FloatImg *fi, double maxima, int notused);
|
||||
int fimg_absolute(FloatImg *fimg);
|
||||
void fimg_drand48(FloatImg *fi, float kmul);
|
||||
|
|
|
@ -296,6 +296,33 @@ if (fi->type == FIMG_TYPE_GRAY) {
|
|||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* nouveau 17 septembre 2022 */
|
||||
int fimg_div_cste(FloatImg *fi, float value)
|
||||
{
|
||||
int nbre, idx;
|
||||
|
||||
if ( (fi->type != FIMG_TYPE_RGB) && (fi->type != FIMG_TYPE_GRAY) ) {
|
||||
fprintf(stderr, "%s : type %d invalide\n",
|
||||
__func__, fi->type);
|
||||
return -44;
|
||||
}
|
||||
|
||||
nbre = fi->width * fi->height;
|
||||
if (fi->type == FIMG_TYPE_RGB) {
|
||||
for (idx=0; idx<nbre; idx++) {
|
||||
fi->R[idx] /= value;
|
||||
fi->G[idx] /= value;
|
||||
fi->B[idx] /= value;
|
||||
}
|
||||
}
|
||||
if (fi->type == FIMG_TYPE_GRAY) {
|
||||
for (idx=0; idx<nbre; idx++) {
|
||||
fi->R[idx] /= value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/* ---------------------------------------------------------------- */
|
||||
/*
|
||||
* oh, please explain the usecase of this function !
|
||||
*/
|
||||
|
|
|
@ -40,9 +40,10 @@ void help(int v)
|
|||
puts("");
|
||||
puts("$ cumulfimgs a.fimg b.fimg c-fimg ...");
|
||||
puts("cumulator options :");
|
||||
puts("\t-v\tincrease verbosity");
|
||||
puts("\t-o\tname of output file");
|
||||
puts("\t-g\tconvert to gray level");
|
||||
puts("\t-o\tname of output file");
|
||||
puts("\t-s\trescale end image");
|
||||
puts("\t-v\tincrease verbosity");
|
||||
puts("");
|
||||
if (verbosity) { puts("Xperiment"); fimg_print_version(v); }
|
||||
exit(0);
|
||||
|
@ -52,22 +53,25 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
int foo, idx;
|
||||
int opt;
|
||||
int compte = 0;
|
||||
|
||||
int to_gray = 0;
|
||||
int experiment = 0;
|
||||
char *output_file = "out.fimg";
|
||||
int compte = 0;
|
||||
int to_gray = 0;
|
||||
int experiment = 0;
|
||||
int rescale = 0;
|
||||
int src_loaded = 0;
|
||||
|
||||
char *output_file = "out.fimg";
|
||||
FloatImg accu, temp;
|
||||
int src_loaded = 0;
|
||||
float vals[6];
|
||||
|
||||
g_width = g_height = 0;
|
||||
|
||||
while ((opt = getopt(argc, argv, "gho:vx")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "gho:svx")) != -1) {
|
||||
switch(opt) {
|
||||
case 'g': to_gray = 1; break;
|
||||
case 'h': help(1); break;
|
||||
case 'o': output_file = optarg; break;
|
||||
case 's': rescale = 1; break;
|
||||
case 'v': verbosity++; break;
|
||||
case 'x': experiment++; break;
|
||||
}
|
||||
|
@ -84,7 +88,7 @@ for (idx=optind; idx<argc; idx++) {
|
|||
#endif
|
||||
foo = testfile(argv[idx]);
|
||||
if (foo) {
|
||||
fprintf(stderr, "testfile %s -> %d\n", argv[idx],foo);
|
||||
fprintf(stderr, "testfile %s -> %d\n", argv[idx], foo);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -104,11 +108,16 @@ for (idx=optind; idx<argc; idx++) {
|
|||
compte++;
|
||||
}
|
||||
|
||||
/* XXX */
|
||||
if (rescale) {
|
||||
fprintf(stderr, "cumulfimg: count = %d\n", compte);
|
||||
fimg_div_cste(&accu, (float)compte);
|
||||
}
|
||||
|
||||
/* XXX */
|
||||
if (experiment) {
|
||||
|
||||
}
|
||||
/* XXX */
|
||||
}
|
||||
/* XXX */
|
||||
|
||||
|
||||
if (to_gray) {
|
||||
|
|
Loading…
Reference in New Issue