Foros del Web » Programación para mayores de 30 ;) » C/C++ »

calcular el negativo de una imagen

Estas en el tema de calcular el negativo de una imagen en el foro de C/C++ en Foros del Web. Para calcular el negativo de una imagen hay que convertir el valor de casa componente de color con esta formula: valor_destino= L – valor_original Con ...
  #1 (permalink)  
Antiguo 17/01/2011, 11:04
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 1
calcular el negativo de una imagen

Para calcular el negativo de una imagen hay que convertir el valor de casa componente de color con esta formula:

valor_destino= L – valor_original

Con la funcion siguiente yo recorro la imagen y le voy restando 255 que es el valor maximo que puede tener un pixel en la imagen pero no me calcula bien el negativo de la imagen.

En la expresion: ((double)((y+x) % (int)L)) ; ¿Que significa el operador %? ¿ Podeis exarme una manita por favor?Es urgente ya que debo entregar mañana un trabajo. Muchas gracias.

El codigo es el siguiente. Trabajo con el programa codeblocks utilizando las librerias de opencv en Windows.

void Op_Negativo( IplImage *imgOrg, IplImage *imgDst )

{

int x, // indice de las columnas
y; // indice de las filas
CvScalar colorDst;

if ( imgOrg->nChannels != 3)
return( 1 );
else
{

for ( x = 0; x < imgOrg->width; x++ )
for ( y = 0; y < imgOrg->height; y++ )
{
colorDst.val[R] = 255.0 - ((double)(y));
colorDst.val[G] = 255.0 - ((double)(x));
colorDst.val[B] = 255.0 - ((double)((y+x) % (int)L)) ;

cvSet2D(imgDst, y, x, colorDst);
} // Fin de " for ( y = 0; y < imgOrg->height; y++ )"
}// Fin de if-else ( imgOrg->nChannels != 3)


} // Fin de "int incializarImgRGB( IplImage *imgOrg )"
  #2 (permalink)  
Antiguo 19/01/2011, 20:31
 
Fecha de Ingreso: enero-2011
Ubicación: Caracas-Venezuela
Mensajes: 14
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: calcular el negativo de una imagen

El operador % determina el residuo de la división entera, por ejemplo 10 % 2 da como resultado 0, 9 % 2 da como resultado 1.

Lo que veo mal en tu algoritmo es la fórmula:

colorDst.val[R] = 255.0 - ((double)(y));

no deberías colocar las coordenadas (x, y) ya que son la posición del píxel, mas no su color y en la fórmula debes usar el color actual del píxel para calcular el nuevo color.

Saludos

Etiquetas: negativo, calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:32.