int main( int argc, char** argv ) { configuracion_t config; procesar_opciones( argc, argv, &config ); // Imprimo info if ( !config.nombre ) { printf ( "Procesando...\n" ); printf ( " Filtro : %s\n", config.nombre_filtro ); printf ( " Implementación : %s\n", C_ASM( ( &config ) ) ); printf ( " Archivo de entrada : %s\n", config.archivo_entrada ); } filtro_t* filtro = detectar_filtro( &config ); filtro->leer_params( &config, argc, argv ); if ( config.es_video ) { correr_filtro_video( &config, filtro->aplicador ); } else { correr_filtro_imagen( &config, filtro->aplicador ); } return 0; }
void correr_filtro_imagen( configuracion_t* config, aplicador_fn_t aplicador ) { snprintf( config->archivo_salida, sizeof( config->archivo_salida ), "%s/%s.%s.%s%s.bmp", config->carpeta_salida, basename( config->archivo_entrada ), config->nombre_filtro, C_ASM( config ), config->extra_archivo_salida ); snprintf( config->archivo_tiempo, sizeof( config->archivo_tiempo ), "%s/%s.%s.%s%s.txt", config->carpeta_salida, basename( config->archivo_entrada ), config->nombre_filtro, C_ASM( config ), config->extra_archivo_salida ); if ( config->nombre ) { printf( "%s\n", basename( config->archivo_salida ) ); } else { opencv_abrir_imagenes( config ); if ( config->tiempo ) { FILE* t; unsigned long start, end; t = fopen( config->archivo_tiempo, "w" ); while ( config->cant_iteraciones-- ) { MEDIR_TIEMPO_START( start ); aplicador( config ); MEDIR_TIEMPO_STOP( end ); fprintf( t, "%lu\n", ( end - start ) ); } fclose( t ); } else { aplicador( config ); } opencv_liberar_imagenes( config ); } }
void correr_filtro_video(configuracion_t *config, aplicador_fn_t aplicador) { if (!config->frames) { snprintf(config->archivo_salida, sizeof(config->archivo_salida), "%s/%s.%s.%s%s.avi", config->carpeta_salida, basename(config->archivo_entrada), config->nombre_filtro, C_ASM(config), config->extra_archivo_salida ); } if (config->nombre) { printf("%s\n", basename(config->archivo_salida)); } else { opencv_abrir_video(config); opencv_frames_do(config, aplicador); opencv_liberar_video(config); } }
void correr_filtro_imagen(configuracion_t *config, aplicador_fn_t aplicador) { snprintf(config->archivo_salida, sizeof(config->archivo_salida), "%s/%s.%s.%s%s.bmp", config->carpeta_salida, basename(config->archivo_entrada), config->nombre_filtro, C_ASM(config), config->extra_archivo_salida ); if (config->nombre) { printf("%s\n", basename(config->archivo_salida)); } else { opencv_abrir_imagenes(config); unsigned long start, end; MEDIR_TIEMPO_START(start); aplicador(config); MEDIR_TIEMPO_STOP(end); unsigned long delta = end - start; printf("%lu \n",delta); opencv_liberar_imagenes(config); } }