convertir a escala de grises con cinder
Frecuentes
Visto 513 equipos
1
Estoy siguiendo un tutorial sobre Ceniza donde carga y muestra imágenes como cinder::gl::Texture
objetos. Esta clase no tiene convert2Grayscale
método, entonces, ¿es posible implementar algo así por mi cuenta? ¿Tengo acceso a píxeles separados? donde podría aplicar un algoritmo simple? (Acceder a los píxeles es en realidad más importante ya que quiero usar esto para otro proyecto)
2 Respuestas
2
Cada píxel está representado por un vector 3D [R,G,B] Donde R es el valor en [0,1] del canal rojo, G es el valor en [0,1] del canal verde y B es el valor en [0,1] del canal azul. La forma más fácil de convertir un píxel RGB 3D en una Y escalar que representará la intensidad de la luz en [0,1] (es decir, escala de grises) es usar la siguiente fórmula:
Y = .2126 * R^gamma + .7152 * G^gamma + .0722 * B^gamma
Donde gamma en la mayoría de los sistemas es igual a 2.2
Ahora, en lo que respecta al acceso a los píxeles de una imagen en ceniza, deberá cargar su imagen en un objeto de superficie. Los objetos de superficie en Cinder tienen funciones de interfaz para acceder a píxeles individuales. Vea este increíble tutorial sobre cómo hacerlo: http://www.creativeapplications.net/tutorials/images-in-cinder-tutorials-cinder/
Respondido 16 Feb 14, 02:02
1
Enfoque más simple, como se muestra en el 'Hola, Cinder' tutoriales en el sitio web de Cinder:
- Cargue la imagen en un objeto de Canal, que por defecto la convertirá a escala de grises a la vez.
Utilice ese objeto Canal para inicializar un objeto Superficie que se puede utilizar en su
draw()
método, algo como:void MiAplicación::configuración() {
Url url( "http://libcinder.org/media/tutorial/paris.jpg" ); mChannel = Channel32f( loadImage( loadUrl( url ) ) ); mTexture = mChannel; mDrawImage = true;
}
void TutorialApp::dibujar()
{
gl::clear( Color( 0, 0, 0 ), true ); if( mDrawImage ) { mTexture.enableAndBind(); gl::draw( mTexture, getWindowBounds() ); }
}
respondido 14 mar '14, 21:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ colors cinder or haz tu propia pregunta.