2010-09-07 21 views
6

Necesito desarrollar un software que seleccione una cara de una foto en la que el fondo sea un color simple (verde, como en las películas).¿Cómo puedo detectar el fondo de una imagen mediante programación?

Luego queremos componer esa selección con otra imagen de fondo, esta parte es fácil con muchas bibliotecas. Pero no sé cómo puedo hacer la selección? ¿Puedes dar algunos enlaces o bibliotecas para investigar? Puedo hacer este proyecto con el idioma que elija, por lo que se aceptan ejemplos o enlaces en cualquier idioma.

+0

Conceptualmente esto es realmente muy fácil: simplemente convierta los píxeles de fondo verde en un valor de 0 alfa, y dibuje la imagen en la imagen de fondo donde quiera. En la práctica, puede ser un poco complicado en los bordes de la frontera. ¿Puedes describir un poco más sobre la tecnología que estás usando? es decir, es esta ventana, C++, etc. – GrandmasterB

+0

GrandmasterB, gracias por su respuesta. Puedo usar cualquier idioma o plataforma en Windows, estaba pensando en usar Java o C#. ¿Puedes compartir un enlace o un ejemplo? Quiero investigar un poco, pero no puedo encontrar demasiada información en google. – Castro

Respuesta

2

Ok, lo que estás tratando de hacer se llama croma key. Como dices, usó mucho en las películas con una pantalla azul/verde. En Windows es bastante fácil de hacer porque está integrado en Windows como parte de GDI + (o en C#, creo que simplemente se llama la clase Graphics).

no tengo ningún código de ejemplo práctico, pero el proceso es bastante sencillo:

Con GDI +, se crea un objeto de mapa de bits imagen en primer plano (el uno con el fondo verde) de. Luego crea un objeto ImageAttributes. Utilice el método SetColorKey() del objeto ImageAttribute para especificar un color o rango de colores para usar como color de fondo. Por último, dibuje ese objeto de mapa de bits sobre el mapa de bits objetivo, y GDI + lo dibujará como si el color de fondo fuera transparente.

Hay más en eso en el código, pero desde el punto de vista del concepto eso es todo lo que hay que hacer.

1

Esta es probablemente una área donde es más fácil trabajar en otro espacio que RGB, como HSV.

También vería la biblioteca OpenCV.

Cuestiones relacionadas