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 )"