diff options
Diffstat (limited to 'multi/SRC/CalibradorColor.cpp')
-rw-r--r-- | multi/SRC/CalibradorColor.cpp | 731 |
1 files changed, 0 insertions, 731 deletions
diff --git a/multi/SRC/CalibradorColor.cpp b/multi/SRC/CalibradorColor.cpp deleted file mode 100644 index f7d4f6b..0000000 --- a/multi/SRC/CalibradorColor.cpp +++ /dev/null @@ -1,731 +0,0 @@ -/* - * CalibradorColor.cpp - * - * Created on: 30/11/2010 - * Author: seba - */ - -/* - * CalibradorAR.cpp - * - * Created on: 8/09/2010 - * Author: smarichal - */ -#include "Utilidades.h" -#include "UtilidadesSDL.h" - /******************************************************************************************************************************** - * CONFIGURACION DE ARTOOLKIT Y MARCADORES - ********************************************************************************************************************************/ - -#ifdef _WIN32 -char *vconf = "Data\\WDM_camera_flipV.xml"; -#else -char *vconf = ""; -#endif - -int count = 0; - - - -char *config_nameCalibrador = "Data/prototipo1/prototipo1.dat"; -//char *config_nameCalibrador = "Data/prototipo1_SeleccionSimple/mezclados2.dat"; -//char *config_nameCalibrador = "Data/prototipo1_SeleccionSimple/mezclados2.dat"; - -ArtoolkitData dataAR; -PropiedadesCalibracion propiedadesCalibracion; -RangosColorApuntador rangosEscalaColor; -int usarAlgoritmoRapido = 0; -int mostrarDebugAR = 0; -int aplicarMascara = 0; - -int h_bins = 30; //El histograma de HUE lo dividimos en 30 partes iguales -int s_bins = 20; //El histograma de SATURATION lo dividimos en 20 partes iguales -int v_bins = 20; //El histograma de BRIGHTNESS lo dividimos en 20 partes iguales - - -//FIXME hay que seleccionar los marcadores de manera no secuencial y que no se repitan. Por el momento comienza en 0 y se va incrementando de a 1 -int id_marcador =0; -int tipoMascara = TIPO_MASCARA_BINARIA; - -int err_deteccion; - -//Solo para debug, borrar -IplImage* imgHsv = NULL; -IplImage* imgC = NULL; -CvRect rectangulo; -//---------- -/****************************************************************************************************************************************** - * VARIABLES DEL CALIBRADOR - *****************************************************************************************************************************************/ -int cantidad_muestras= 6; -int res_aplicar_mascara; -int muestra = 0; - -int factorProporcionMaximoH = 10; -int porcentajeMinimoRuido = 7; - -int tomar_muestra = 0; -int aplicar_mascara; -int aplicar_nueva_mascara; -/************************************************************************ - * LAS SIGUIENTES SON EL PROTOTIPO CLICKS, NO TIENEN NADA QUE VER CON EL CALIBRADOR COLOR - * - */ -int jugar = 0; -int mostrarVideo = 0; -int mostrarRadar =0; - - /*************************************************************************************************************************************** - * DECALRACIONES DE FUNCIONES AUXILIARES Y VARIABLES AUXILIAREAS - ****************************************************************************************************************************************/ -static void keyEvent( unsigned char key, int x, int y); -static void mainLoop(void); -static void proximoElemento(); -static void actualizarPantalla(); -static void mainLoopClicks(); -static void initClicksCV(); - - -void initRangosColor(){ - rangosEscalaColor.hmin = 1; //Teoricamente seria correcto que hmin fuera 0. Lo ponemos en 1 - //Porque los negros totales y los blancos totales son convertidos - //con H=0 y eso lleva a que se introduzca ruido en el histograma - - rangosEscalaColor.hmax = 360; - rangosEscalaColor.smin = 0; - rangosEscalaColor.smax = 100; - rangosEscalaColor.vmin = 0; - rangosEscalaColor.vmax = 100; -} - - -void calibrar(PropiedadesCalibracion* propiedades, ArtoolkitData* data){ - if(tomar_muestra){ - printf("Tomo la muestra!!!!!\n"); - int err_tomarMuestra = tomarMuestraApuntador(propiedades,data); - - if(err_tomarMuestra==ERROR_TOMAR_MUESTRA_FORMA_NO_IMPLEMENTADA){ - fprintf(stderr, "Error, no se pudo tomar muestra. Forma no implementada\n"); - }else if(err_tomarMuestra==ERROR_TOMAR_MUESTRA_OK){ - printf("Muestra tomada OK\n"); - } - tomar_muestra=0; - id_marcador++; //FIXME no se debe incrementar asi porque se va a seleccionar de alguna manera mas inteligente, capaz aleatorio - muestra++; - }else{ - capturarImagenAR(data); - if(aplicar_mascara){ - if(aplicar_nueva_mascara){ //Calculo la nueva mascara y la aplico - err_deteccion = detectarYCalcularPosicionTodosMultiMarkers(data); - if(err_deteccion==DETECCION_CORRECTA){ - res_aplicar_mascara = aplicarNuevaMascaraCalibrador(propiedades,data,id_marcador,tipoMascara); - if(res_aplicar_mascara==MASCARA_APLICADA){ - printf("Se aplico la mascara correctamente\n"); - aplicar_nueva_mascara = 0; - } - }else{ - printf("err_deteccion= %d \n",err_deteccion); - } - }else{ //No calculo nueva mascara pero la aplico - aplicarMascaraCalibrador(propiedades,data,tipoMascara); - } - } - desplegarImagen(data); - - - arUtilSleep(90000); //FIXME dormir segun el fps - arVideoCapNext(); //Si no pongo el capnext dsps del sleep a veces pisa la imagen - } -} - -void desplegarRangosColor(RangosColorApuntador rangos){ - printf("--------Rangos de Color--------\n"); - printf("Hue: [%d,%d]\n",rangos.hmin,rangos.hmax); - printf("Saturation: [%d,%d]\n",rangos.smin,rangos.smax); - printf("Brightness: [%d,%d]\n",rangos.vmin,rangos.vmax); - printf("--------------------------------\n"); -} - -void mainL(void){ - - if(muestra<cantidad_muestras){ - calibrar(&propiedadesCalibracion,&dataAR); - }else if(!jugar){ - printf("Ya se tomaron todas las muestras, ahora se procesan los histogramas\n"); - calcularResultadosCalibracionApuntador(&propiedadesCalibracion,&dataAR,factorProporcionMaximoH,porcentajeMinimoRuido); - printf("Resultados:\n"); - desplegarRangosColor(propiedadesCalibracion.resultado_rangos_color); - printf("Fin de la calibracion\n"); - - //Inicializo clicksCV - printf("Inicializo Prototipo clicks CV\n"); - initClicksCV(); - printf("PPPPPPPPPPP Prototipo INICIALIZADO!!!!\n"); - jugar=1; - }else{ //estoy en el juego - mainLoopClicks(); - } -} - -int main(int argc, char **argv) -{ - glutInit(&argc, argv); - printf("InitAR\n"); - initAR(&dataAR,config_nameCalibrador,vconf,usarAlgoritmoRapido,2.0); - printf("Init Rangos Color\n"); - initRangosColor(); - printf("Init prop calib \n"); - initPropiedadesCalibracionSoloApuntador(cantidad_muestras,FORMA_APUNTADOR_CIRCULO,&dataAR,&propiedadesCalibracion,rangosEscalaColor,h_bins,s_bins,v_bins,1); - propiedadesCalibracion.debug_imagenes=0; - aplicar_mascara=1; - aplicar_nueva_mascara=1; - arVideoCapStart(); - printf("main loop\n"); - argMainLoop( NULL, keyEvent, mainL); - return (0); -} - - -static void keyEvent( unsigned char key, int x, int y) -{ - /* quit if the ESC key is pressed */ - if( key == 0x1b ) { - printf("*** %f (frame/sec)\n", (double)count/arUtilTimer()); - cleanupAR(); - exit(0); - } - - if( key == SDLK_RETURN){ - tomar_muestra = 1; - aplicar_nueva_mascara = 1 -aplicar_nueva_mascara; - aplicar_mascara = 1; - } - - if( key == 'a'){ - aplicar_mascara = 1 - aplicar_mascara; - } - - if( key == 'n'){ - aplicar_nueva_mascara = 1 -aplicar_nueva_mascara; - aplicar_mascara = 1; - } - - if( key == 'u'){ - if(tipoMascara==TIPO_MASCARA_BINARIA){ - tipoMascara=TIPO_MASCARA_ATENUANTE; - printf("Usando mascara ATENUANTE!\n"); - }else{ - tipoMascara=TIPO_MASCARA_BINARIA; - printf("Usando mascara BINARIA!\n"); - } - } - - if( key == 't' ) { - printf("count = %d\n",count); - printf("timer = %f\n",arUtilTimer()); - printf("*** %f (frame/sec)\n", (double)count/arUtilTimer()); - printf("Enter new threshold value (current = %d): ", dataAR.thresh); - scanf("%d",&dataAR.thresh); while( getchar()!='\n' ); - printf("\n"); - count = 0; - } - - /* turn on and off the debug mode with right mouse */ - if( key == 'd' ) { - mostrarDebugAR = 1 - mostrarDebugAR; - mostrarImagenDebugAR(mostrarDebugAR); - } - - - - /***Solo para el prototipo clicks, no debe estar aca, es de ultimo momento***/ - if( key == SDLK_SPACE) { - printf("Proximo\n"); - proximoElemento(); - actualizarPantalla(); - - } - - - if( key == 'r' ) { - printf("Mostrar Radar\n"); - mostrarRadar = 1 - mostrarRadar; - if(!mostrarRadar){ - argCleanWindow(2,1); - } - } - - if( key == 'v' ) { - mostrarVideo = 1 - mostrarVideo; - if(!mostrarVideo){ - argCleanWindow(0,0); - } - } - - if( key == SDLK_1 ) { - propiedadesCalibracion.restarAlRadio +=5; - aplicar_nueva_mascara = 1; - aplicar_mascara = 1; - } - - if( key == SDLK_2 ) { - propiedadesCalibracion.restarAlRadio -=5; - aplicar_nueva_mascara = 1; - aplicar_mascara = 1; - } - - - - -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -///////////////*****************************PROTOTIPO SELECCION SIMPLE********************************************//////////////////// - -#define MAX_MARCADORES 30 -#define MIN_AREA 500 -int min_area = 1500; -float factor = 1.0; - - -/* Representacion de los elementos*/ -Elemento elementos[MAX_MARCADORES]; //El indice el elemento coincide con el id del elemento que tambien coincide con el id del marcador artoolkit -int cantElementosCargados = 0; - -int elementoActual = -1; //indice del elemento que esta en pantalla - -int correspondenciaCorrecta = 0; //indica si el elemento del conjunto A y el del conjunto B - // que se seleccionaron se corresponden -int correspondenciaIncorrecta = 0; - -int xNombreRelacion = 200; -int yNombreRelacion = 15; - -int xImagen = 135; -int yImagen = 100; - - -int anchoPantalla = 655; -int altoPantalla = 700; - -//Son los id de las imagenes actualmente desplegadas en la pantalla -int idSDLImagenPantalla = -1; - - -//Sonidos del click y de error -char clickSound[255]; -char errorSound[255]; - -//Variable para mantener el historico de los ultimos marcadores seleccionados -//Lo usamos como buffer circular -Historico historico; - -#define CONJUNTO_A 0 -#define CONJUNTO_B 1 - - -IplImage* img =NULL; -uchar* data1 =NULL; -IplImage* mono_Image = NULL; - -/*La posicion i del arreglo corresponde al marcador con con patt_id=i*/ -ARCoordMarcador marcadoresOcultos[MAX_MARCADORES]; //MAX_MARCADORES es la maxima cantidad -1 de marcadores que la aplicacion puede manejar. - - -int debugImg = 0; //Parametro para hayObjetoColor. Si se le pasa 1 y se le pasa una ventana entonces va reproduciendo el ROI. Sino crea una ventana nueva pero detiene la aplicacion hasta tocar una tecla -#define ERODE 1 -#define DILATE 1 -#define SMOOTH 1 -#define OFFSET_ROI 5 //Cuanto mas grande mas grande sera el ROI donde busco el apuntador -#define MIN_AREA_WIDTH_HEIGHT 5 //Este valor sirve para indicar cual es el area minima en la cual se busca un apuntador. - //Por ejemplo si el marcador se encuentra apenas dentro de la pantalla y el height o el width no superan este valor entonces - //el area no sera analizada en busca de un apuntador -#define CANT_HISTORIA 4 - -static void proximoElemento(){ - if(elementoActual == cantElementosCargados -1){//TODO Vuelve a comenzar o mensaje de exito y finaliza?? - elementoActual = 0; - }else{ - elementoActual++; - } -} - -static void proximoElemento(); -static void actualizarPantalla(){ - if(elementoActual!=-1){ - if(elementos[elementoActual].idImagenSDL == idSDLImagenPantalla && idSDLImagenPantalla >= 0){ - printf("Se sigue con la misma imagen, no se hace nada"); - }else{ - if(idSDLImagenPantalla!=-1){ - OcultarImage(idSDLImagenPantalla,0); - } - if( (elementos[elementoActual].idImagenSDL == -1) ){ //Todavia no se cargo la imagen para este elemento - printf("voy a desplegar la imagen: %s\n",elementos[elementoActual].imagen); - elementos[elementoActual].idImagenSDL = PlayImageConTitulo( elementos[elementoActual].imagen, elementos[elementoActual].nombre,xImagen,yImagen,0); - idSDLImagenPantalla = elementos[elementoActual].idImagenSDL; //Actualizo el id de la imagen mostrada actualmente - printf("IdSDLA = %d\n",idSDLImagenPantalla); - }else{ - mostrarImagen(elementos[elementoActual].idImagenSDL,0); - idSDLImagenPantalla = elementos[elementoActual].idImagenSDL; - } - } - - if(correspondenciaCorrecta){ - OcultarZona(xNombreRelacion,yNombreRelacion,anchoPantalla - xNombreRelacion,yImagen - yNombreRelacion,0); //Borro la zona superior de la pantalla que es donde esta escrito el texto - EscribirTexto(elementos[elementoActual].nombreRelacion,xNombreRelacion,yNombreRelacion,0); - PlaySound(elementos[elementoActual].sonido); - }else if(correspondenciaIncorrecta){ - PlaySound(errorSound); - } - - }else{ - EscribirTexto("Prototipo - Estado Inicial",xNombreRelacion,yNombreRelacion,0); - } - //Actualizo la pantalla - printf("Flip antes\n"); - flip(); - printf("Flip dsps\n"); -} - - -/** - * Recibe el indice del marcador no detectado y chequea si algun apuntador esta colisionando con el mismo. - * Devuelve el area del apuntador detectado o 0 en caso de no haber detectado ninguno. - */ -float hayColision(int indiceMarcdor, ARUint8 *dataPtr){ -//TODO Ver si es necesario crear la imagen opencv en color o solo con pasar del dataPtr alcanza para crear la mono y pasarsela al hayContorno - int resultado[2]; - calcularPuntoOrigen(marcadoresOcultos[indiceMarcdor].vertex, resultado); - - float v0_x = marcadoresOcultos[indiceMarcdor].vertex[resultado[0]][0]; - float v0_y = marcadoresOcultos[indiceMarcdor].vertex[resultado[0]][1]; - float v2_x = marcadoresOcultos[indiceMarcdor].vertex[resultado[1]][0]; - float v2_y = marcadoresOcultos[indiceMarcdor].vertex[resultado[1]][1]; - - int xStart = 0; - if(v0_x>OFFSET_ROI){ //Chequeo para no salirme del ancho de la pantalla - xStart = v0_x - OFFSET_ROI; - } - - int yStart = 0; - if(v0_y > OFFSET_ROI){ //Chequeo para no salirme del alto de la pantalla - yStart = v0_y - OFFSET_ROI; - } - - int widthZonaEstudio = abs( v2_x - xStart) + OFFSET_ROI; - if(xStart + widthZonaEstudio > dataAR.xsize){ //Chequeo para no salirme del ancho de la pantalla - widthZonaEstudio = dataAR.xsize - xStart; - } - - int heightZonaEstudio = abs(v2_y - yStart) + OFFSET_ROI; - if(yStart + heightZonaEstudio > dataAR.ysize){ //Chequeo para no salirme del alto de la pantalla - heightZonaEstudio = dataAR.ysize - yStart; - } - - cvSetImageData( img, (uchar*)(dataPtr), img->width* img->nChannels ); - img->origin = IPL_ORIGIN_TL; - cvZero(mono_Image); //FIXME Es necesario? Probar sin esto - float area = -1; - - //Calculo el area de la zona de estudio. Segun este area vamos a obtener la cota minima y maxima del area del apuntador esperado segun la calibracion que se hay realizado - //Por ejemplo si el apuntador ocupa 1/8 del marcador, y el area de la zona de estudio (que es aproximadamente el area del marcador) es de 800, entonces - //buscaremos un apuntador de (800)*(1/8) = 100 +/- UMBRAL_AREA_APUNTADOR - int areaZonaEstudio = heightZonaEstudio*widthZonaEstudio; - - if(heightZonaEstudio>MIN_AREA_WIDTH_HEIGHT && widthZonaEstudio > MIN_AREA_WIDTH_HEIGHT){ //Ver definicion de MIN_AREA_WIDTH_HEIGHT para comprender mejor este chequeo - //area = fabs(hayObjetoColor(img,mono_Image,minH,maxH,minS,maxS,minB,maxB,(mostrarImagenDebug)&&(idMarcadorMostrarImagenDebug==indiceMarcdor),xStart,yStart,widthZonaEstudio,heightZonaEstudio,min_area,max_area,ERODE,DILATE,SMOOTH)); - //Esta invocacion a hayObjetoColor esta desactualizada, debe llamarse a la funcion hayApuntador - area = fabs(hayObjetoColor(img,mono_Image, - propiedadesCalibracion.resultado_rangos_color.hmin,propiedadesCalibracion.resultado_rangos_color.hmax, - propiedadesCalibracion.resultado_rangos_color.smin,propiedadesCalibracion.resultado_rangos_color.smax, - propiedadesCalibracion.resultado_rangos_color.vmin,propiedadesCalibracion.resultado_rangos_color.vmax, - debugImg,xStart,yStart,widthZonaEstudio,heightZonaEstudio,min_area,areaZonaEstudio/1.5, - ERODE,DILATE,SMOOTH,1,NULL,NULL)); - - if(area>0){ - printf("Area zona estudio = %d\n",areaZonaEstudio); - printf("Area apuntador = %f\n",area); - /************************************************************************************************************ - * DESCOMENTAR EL SIGUIENTE CODIGO PARA VER LOS SEGMENTOS DE IMAGEN EN LOS CUALES SE DETECTO EL APUNTADOR - * mostrarTarget(img,xStart,yStart,widthZonaEstudio,heightZonaEstudio); - * mostrarTarget(mono_Image,xStart,yStart,widthZonaEstudio,heightZonaEstudio); - * **********************************************************************************************************/ - } - } - return area; -} - - - - - - - - -/* cleanup function called when program exits */ -static void cleanupClicksCV(void) -{ - arVideoCapStop(); - arVideoClose(); - argCleanup(); - cleanUpSDL(); -} - - -/* main loop de clicksCV*/ -static void mainLoopClicks() -{ - double err; - int i; - - - /* grab a video frame */ -printf("Main loop proptotipo!!\n"); - arUtilSleep(90000); - if( (dataAR.dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) { - printf("sleep\n"); - arUtilSleep(2); - return; - } - if( count == 0 ) arUtilTimerReset(); - count++; - - if(img==NULL){ - img = crearImagenCv2(dataAR.dataPtr,dataAR.xsize,dataAR.ysize); - } - - /* detect the markers in the video frame */ - if( arDetectMarker(dataAR.dataPtr, dataAR.thresh, &dataAR.marker_info, &dataAR.marker_num) < 0 ) { - cleanupClicksCV(); - exit(0); - } - - - - //argSwapBuffers(); - if(mostrarVideo){ - argDrawMode2D(); - if( !arDebug ) { - argDispImage( dataAR.dataPtr, 0,0 ); - } - else { - argDispImage( dataAR.dataPtr, 1, 1 ); - if( arImageProcMode == AR_IMAGE_PROC_IN_HALF ) - argDispHalfImage( arImage, 0, 0 ); - else - argDispImage( arImage, 0, 0); - - glColor3f( 1.0, 0.0, 0.0 ); - glLineWidth(6.0); - for( i = 0; i < dataAR.marker_num; i++ ) { - argDrawSquare( dataAR.marker_info[i].vertex, 0, 0 ); - } - glLineWidth( 1.0 ); - } - } - - if(mostrarRadar){ - argDrawMode2D(); - argCleanWindow(2,1); - dibujarLimitesPantalla(dataAR.xsize, dataAR.ysize); - for( i = 0; i < dataAR.marker_num; i++ ) { - dibujarMiniMarcador(0,0,dataAR.marker_info[i].vertex,1); - //printf() - //argDrawSquare( marker_info[i].vertex, 2, 1 ); - } - } - arVideoCapNext(); - - if( (err=arMultiGetTransMat(dataAR.marker_info, dataAR.marker_num, dataAR.config)) < 0 ) { - printf("return!\n"); - argSwapBuffers(); - return; - } - - if(err > 100.0 ) { - printf("saliendo 2\n"); - argSwapBuffers(); - return; - } - - if(mostrarVideo){ - argDrawMode3D(); - argDraw3dCamera( 0, 0 ); - glClearDepth( 1.0 ); - glClear(GL_DEPTH_BUFFER_BIT); - } - printf("Marcadores detectados = %d\n",dataAR.marker_num); - - - if(dataAR.marker_num>0){ - for( i = 0; i < dataAR.config->marker_num; i++ ) { - if( (0)&&(dataAR.config->marker[i].visible >= 0) ){ - draw( dataAR.config->trans, dataAR.config->marker[i].trans, 0 ); - }else { - //printf("No visible: Width> %f",config->marker[i].width); - //printf("No visible: Center> (%f,%f)",config->marker[i].center[0],config->marker[i].center[1]); - - /* - * MARCADOR NO DETECTADO. - * * TENEMOS SUS COORDENADAS - * - Marker Coordinates (Xm,Ym) - * - Camera Coordinates (Xc,Yc) - * * NECESITAMOS SUS COORDENADAS - * - Ideal Screen Coordinates (xc,yc) - * - */ - double hXi_hYi[3][4]; - obtenerCoordenadasIdealesMarcadorNoDetectado(dataAR.config->trans,dataAR.config->marker[i],hXi_hYi,marcadoresOcultos[i].vertex); - - double Xi,Yi; - if(hXi_hYi[2][3]!=0){ //TODO que pasa si h==0? - marcadoresOcultos[i].centro[0] = hXi_hYi[0][3]/hXi_hYi[2][3]; - marcadoresOcultos[i].centro[1] = hXi_hYi[1][3]/hXi_hYi[2][3]; - }else{ - marcadoresOcultos[i].centro[0] = hXi_hYi[0][3]; - marcadoresOcultos[i].centro[1] = hXi_hYi[1][3]; - } - - - if(mostrarRadar){ - argDrawMode2D(); - dibujarMiniMarcador(0,0,marcadoresOcultos[i].vertex,0); - } - - int area = hayColision(i,dataAR.dataPtr); //Chequea que algun apuntado este colisionando con el marcador i - if(area>0){ - int cant = registrarColision(i,&historico); - if(cant>=CANT_HISTORIA){ - correspondenciaCorrecta = 0; - correspondenciaIncorrecta = 0; - //printf("es de conjunto A y ") - if(dataAR.config->marker[i].patt_id == elementoActual){ - correspondenciaCorrecta = true; - printf("&&&&&&&&&&& COLISION CON MARCADOR %d &&&&&&&&&&&&&&&\n",i); - actualizarPantalla(); - correspondenciaCorrecta = false; - }else{ - correspondenciaIncorrecta = false; - printf("&&&&&&&&&&& COLISION CON MARCADOR %d &&&&&&&&&&&&&&&\n",i); - actualizarPantalla(); - } - - break; // Por ahora cuando se detecta la primera colision ya frenamos - }else{ - printf("Colision nro %d con marcador %d\n",cant,i); - } - } - - } - - } - } - - argSwapBuffers(); -} - - -void initClicksCV() -{ - - //Cargo archivo de configuracion de los elementos a detectar - cantElementosCargados = leerConfiguracionElementos("prototipo1_SeleccionSimple.config",elementos,MAX_MARCADORES,clickSound,errorSound); - printf("Se cargaron %d elementos\n",cantElementosCargados); - imprimirPropiedadesElementos(elementos,cantElementosCargados); - /* open the video path */ - if(dataAR.xsize<500){ - printf("min_area = %d\n", MIN_AREA/2); - min_area = MIN_AREA/2; - }else{ - printf("min_area = %d\n", MIN_AREA); - min_area = MIN_AREA; - } - - printf("Inicializo data e img\n"); - data1= new uchar[dataAR.xsize* AR_PIX_SIZE_DEFAULT*dataAR.ysize]; // Creo data1 del maximo tamanio que pueda necesitar - img = crearImagenCv2(data1,dataAR.xsize,dataAR.ysize); // Idem con la imagenCv - mono_Image =cvCreateImage( cvGetSize(img), 8, 1 ); - - //Inicializacion de sdl - if(!initSDL(anchoPantalla,altoPantalla)){ - cleanupClicksCV(); - exit(0); - } - CargarFondo("Data/prototipo1/fondoPrototipo1.bmp",1); - - - //Inicializo historial - initHistorico(&historico,CANT_HISTORIA,-1); - elementoActual = 0; - actualizarPantalla(); - -} - - - - - - - |