@ -12,6 +12,37 @@ int verbosity;
@@ -12,6 +12,37 @@ int verbosity;
float global_fvalue ;
/* --------------------------------------------------------------------- */
/*
* egalisation dynamique approximative
* # coronamaison Thu 09 Apr 2020 03 : 37 : 10 PM CEST
*/
int essai_equalize ( char * infile )
{
FloatImg src ;
int foo ;
if ( NULL ! = infile ) {
fprintf ( stderr , " %s: loading %s \n " , __func__ , infile ) ;
foo = fimg_create_from_dump ( infile , & src ) ;
if ( foo ) {
fprintf ( stderr , " %s: err load '%s' \n " , __func__ , infile ) ;
return foo ;
}
}
else {
fprintf ( stderr , " %s : NOT INPUT FILE, FUBAR \n " , __func__ ) ;
abort ( ) ;
}
foo = fimg_equalize_compute ( & src , NULL ) ;
fprintf ( stderr , " equalize compute --> %d \n " , foo ) ;
fimg_destroy ( & src ) ;
return - 1 ;
}
/* --------------------------------------------------------------------- */
int essai_rotate ( char * infile )
{
@ -82,19 +113,24 @@ else {
@@ -82,19 +113,24 @@ else {
fimg_test_pattern ( & src , 0 , 255.0 ) ;
}
fimg_save_as_png ( & src , " test.png " , 0 ) ;
// fimg_save_as_png(&src, "test.png", 0);
foo = fimg_clone ( & src , & dst , 0 ) ;
if ( foo ) {
fprintf ( stderr , " %s: err clone %p \n " , __func__ , & src ) ;
return - 44 ;
}
fimg_filter_3x3 ( & src , & dst , & filter_a ) ;
foo = fimg_clamp_negativ ( & dst ) ;
if ( foo ) {
fprintf ( stderr , " clamped %d negative pixels \n " , foo ) ;
}
foo = fimg_save_as_png ( & dst , " f3x3a.png " , 0 ) ;
// foo = fimg_save_as_png(&dst, "f3x3a.png", 0);
// foo = fimg_save_as_pnm(&dst, "f3x3a.pnm", 0);
fimg_filter_3x3 ( & src , & dst , & filter_b ) ;
@ -102,7 +138,7 @@ foo = fimg_clamp_negativ(&dst);
@@ -102,7 +138,7 @@ foo = fimg_clamp_negativ(&dst);
if ( foo ) {
fprintf ( stderr , " clamped %d negative pixels \n " , foo ) ;
}
foo = fimg_save_as_png ( & dst , " f3x3b.png " , 0 ) ;
// foo = fimg_save_as_png(&dst, "f3x3b.png", 0);
// foo = fimg_save_as_pnm(&dst, "f3x3a.pnm", 0);
fimg_destroy ( & src ) ; fimg_destroy ( & dst ) ;
@ -315,36 +351,102 @@ fprintf(stderr, "save as png -> %d\n", foo);
@@ -315,36 +351,102 @@ fprintf(stderr, "save as png -> %d\n", foo);
return 0 ;
}
/* --------------------------------------------------------------------- */
enum nCmd { Equalize = 1 , Rotate , Sfx0 , F3x3 } ;
typedef struct {
char * name ;
int Cmd ;
} Command ;
Command commands [ ] = {
{ " equalize " , Equalize } ,
{ " rotate " , Rotate } ,
{ " sfx0 " , Sfx0 } ,
{ " f3x3 " , F3x3 } ,
{ NULL , 0 }
} ;
/* --------------------------------------------------------------------- */
int lookup_cmd ( char * cmdtxt )
{
Command * pcmd ;
pcmd = commands ;
while ( pcmd - > name ) {
if ( ! strcmp ( pcmd - > name , cmdtxt ) ) return pcmd - > Cmd ;
pcmd + + ;
}
return - 1 ;
}
/* --------------------------------------------------------------------- */
void help ( int k )
{
Command * pcmd ;
fprintf ( stderr , " usage: \n \t ./t command in-filename \n " ) ;
fprintf ( stderr , " commands: \n " ) ;
pcmd = commands ;
while ( pcmd - > name ) {
fprintf ( stderr , " \t %-15s %d \n " , pcmd - > name , pcmd - > Cmd ) ;
pcmd + + ;
}
fprintf ( stderr , " \n compiled on " __DATE__ " at " __TIME__ " \n " ) ;
exit ( 0 ) ;
}
/* --------------------------------------------------------------------- */
int main ( int argc , char * argv [ ] )
{
int foo , opt ;
char * filename ;
char * filename , * command ;
puts ( " ++++++++++++++++++++++++++++++++ " ) ;
puts ( " ++++++++ test des fonctions +++++++ " ) ;
global_fvalue = 1.0 ;
while ( ( opt = getopt ( argc , argv , " hk:v " ) ) ! = - 1 ) {
switch ( opt ) {
// case 'h': help(0); break;
case ' h ' : help ( 0 ) ; break ;
case ' k ' : global_fvalue = atof ( optarg ) ; break ;
case ' v ' : verbosity + + ; break ;
}
}
fprintf ( stderr , " argc %d optind %d \n " , argc , optind ) ;
// fprintf(stderr, "argc %d optind %d\n", argc, optind);
filename = NULL ;
if ( 1 = = argc - optind ) filename = argv [ optind ] ;
if ( 2 ! = argc - optind ) {
fprintf ( stderr , " %s: bad command line \n " , argv [ 0 ] ) ;
help ( 1 ) ;
}
command = argv [ optind ] ;
filename = argv [ optind + 1 ] ;
if ( verbosity ) {
fprintf ( stderr , " running command '%s' on '%s' \n " , command , filename ) ;
}
opt = lookup_cmd ( command ) ;
fprintf ( stderr , " lookup '%s' --> %d \n " , command , opt ) ;
switch ( opt ) {
case Equalize :
foo = essai_equalize ( filename ) ; break ;
case Sfx0 :
foo = essai_sfx0 ( filename ) ; break ;
case F3x3 :
foo = essai_filtrage_3x3 ( filename ) ; break ;
default :
fprintf ( stderr , " %s : bad command \n " , command ) ;
exit ( 1 ) ;
/*
foo = essai_filtrage_2x2 ( filename ) ;
if ( foo ) {
fprintf ( stderr , " Filtre 2x2 ====> %d \n " , foo ) ;
}
*/
foo = essai_rotate ( filename ) ;
if ( foo ) {
fprintf ( stderr , " Essai ====> %d \n " , foo ) ;
}