Download document (10.35 MB) - Escuela Superior de Informática ...

Download document (10.35 MB) - Escuela Superior de Informática ... Download document (10.35 MB) - Escuela Superior de Informática ...

11.07.2015 Views

166 Capítulo D. Código fuente163 double dy = pt.y - points[1][i].y;164165 if( dx*dx + dy*dy 15 && i < 32 && ficheroGFACIALES != NULL) {206207 if (MarcasEscritasGestos ==208 InfoFicheroGestos.gestos_num_canales) {209 MarcasEscritasGestos = 0;210 }211212 /* Se ponen signos negativos para renderizar bien213 en openGL con coords buenas*/214 fprintf (ficheroGFACIALES, " %i \t %i \t %f\r\n",215 MarcasEscritasGestos++, numFrame - 1, -points[1][i].x);216 fprintf (ficheroGFACIALES, " %i \t %i \t %f\r\n",217 MarcasEscritasGestos++, numFrame - 1, points3d[1][i].z);218 fprintf (ficheroGFACIALES, " %i \t %i \t %f\r\n",219 MarcasEscritasGestos++, numFrame - 1, -points[1][i].y);220 }221222

D.2. Código fuente de los módulos más relevantes. 167223 }//fin for para recorrer todos los puntos en cada frame224225 /* Para no perder puntos */226 if (k != count) {227228 points[1][k].x = points[0][k].x;229 points[1][k].y = points[0][k].y;230 k ++;231232 }233 count = k;234235 }236237 /* Para inicializar puntos con clics de ratón */238 if( add_remove_pt && count < MAX_COUNT )239 {240 points[1][count++] = cvPointTo32f(pt);241 cvFindCornerSubPix( grey, points[1] + count - 1,242 1,cvSize(win_size,win_size), cvSize(-1,-1),243 cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));244 add_remove_pt = 0;245 if(count == 6 ) {246 initializeCoordinates(0);247 }248 }249250 /* Se recalculan las longitudes de los brazos y angulos */251 longAnteBrIzqdo = distance(points[1][2].x,points[1][2].y,252 points[1][0].x,points[1][0].y);253 longAnteBrDrcho = distance(points[1][3].x,points[1][3].y,254 points[1][1].x,points[1][1].y);255 longBrazoIzqdo = distance(points[1][4].x,points[1][4].y,256 points[1][2].x,points[1][2].y);257 longBrazoDrcho = distance(points[1][5].x,points[1][5].y,258 points[1][3].x,points[1][3].y);259260 /* Se copian las caracteristicas de la imagen del frame261 actual como frame anterior */262 CV_SWAP( prev_grey, grey, swap_temp );263 CV_SWAP( prev_pyramid, pyramid, swap_temp );264 CV_SWAP( points[0], points[1], swap_points );265 CV_SWAP( points3d[0], points3d[1], swap_points3d);266267 need_to_init = 0;268269 detect_face_eyes_mouth(imageOF);270 find_and_draw_contours(imageOF);271272 }Funciones más relevantes de splines.c1 /**********************************************************************2 * Funcion: suavizar3 * Descripcion: Suaviza la trayectoria del canal pasado como parametro.4 * Entradas: desde --> Frame origen del intervalo5 * hasta --> Frame destino del intervalo6 * canal --> Numero de canal a suavizar

D.2. Código fuente <strong>de</strong> los módulos más relevantes. 167223 }//fin for para recorrer todos los puntos en cada frame224225 /* Para no per<strong>de</strong>r puntos */226 if (k != count) {227228 points[1][k].x = points[0][k].x;229 points[1][k].y = points[0][k].y;230 k ++;231232 }233 count = k;234235 }236237 /* Para inicializar puntos con clics <strong>de</strong> ratón */238 if( add_remove_pt && count < MAX_COUNT )239 {240 points[1][count++] = cvPointTo32f(pt);241 cvFindCornerSubPix( grey, points[1] + count - 1,242 1,cvSize(win_size,win_size), cvSize(-1,-1),243 cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));244 add_remove_pt = 0;245 if(count == 6 ) {246 initializeCoordinates(0);247 }248 }249250 /* Se recalculan las longitu<strong>de</strong>s <strong>de</strong> los brazos y angulos */251 longAnteBrIzqdo = distance(points[1][2].x,points[1][2].y,252 points[1][0].x,points[1][0].y);253 longAnteBrDrcho = distance(points[1][3].x,points[1][3].y,254 points[1][1].x,points[1][1].y);255 longBrazoIzqdo = distance(points[1][4].x,points[1][4].y,256 points[1][2].x,points[1][2].y);257 longBrazoDrcho = distance(points[1][5].x,points[1][5].y,258 points[1][3].x,points[1][3].y);259260 /* Se copian las caracteristicas <strong>de</strong> la imagen <strong>de</strong>l frame261 actual como frame anterior */262 CV_SWAP( prev_grey, grey, swap_temp );263 CV_SWAP( prev_pyramid, pyramid, swap_temp );264 CV_SWAP( points[0], points[1], swap_points );265 CV_SWAP( points3d[0], points3d[1], swap_points3d);266267 need_to_init = 0;268269 <strong>de</strong>tect_face_eyes_mouth(imageOF);270 find_and_draw_contours(imageOF);271272 }Funciones más relevantes <strong>de</strong> splines.c1 /**********************************************************************2 * Funcion: suavizar3 * Descripcion: Suaviza la trayectoria <strong>de</strong>l canal pasado como parametro.4 * Entradas: <strong>de</strong>s<strong>de</strong> --> Frame origen <strong>de</strong>l intervalo5 * hasta --> Frame <strong>de</strong>stino <strong>de</strong>l intervalo6 * canal --> Numero <strong>de</strong> canal a suavizar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!