Pregunta

Tengo dos imágenes de mapa de bits. Una de ellas contiene una imagen tomada con una cámara USB. El otro contendrá una forma, como un rectagle, pero también puede ser un trapezoide, o digamos que, de forma aleatoria con un solo color en ella. El resto de la imagen es de color blanco en este momento.

Las dos imágenes no son del mismo tamaño, pero los algoritmos de escala no son la parte más difícil aquí, por lo que permite asumir que son de las mismas dimensiones exactas.

Quiero mostrar mi forma de la imagen de la cámara USB. La parte blanca será considerado como transparente para el propósito combinaison. En este momento estoy pensando en la edición de los píxeles de la imagen de píxeles, pero estoy en busca de una API que lo haga por mí.

Así que si tomo una foto con una casa en el centro de la misma y superponer un rectagle rojo, la imagen resultante tendrá la imagen original con un rectángulo rojo alrededor de la casa.

Estoy usando .NET si esto puede ayudar. También podría utilizar la API de win32 si contiene algunas funciones útiles.

Editar: Acepté la respuesta, ya que me puso en el camino correcto. Esto es realmente muy fácil de hacer.

Bitmap^ overlay_image = gcnew Bitmap("overlay.bmp");
Bitmap^ original_image = gcnew Bitmap("original.bmp");
overlay_image->MakeTransparent(Color::White);
Graphics^ g_original = Graphics::FromImage(original_image);
g_original->DrawImage(overlay_image, 0, 0);

Voilà, original_image tiene ahora un rectángulo rojo sobre él. En realidad, es lo suficientemente rápido para mi cámara USB 30fps para que pueda obtener en tiempo real.

No hay escalado hecho en este momento. Además, se supone que el fondo de la imagen de superposición es de color blanco, que se hizo transparente.

¿Fue útil?

Solución

Si está utilizando la plataforma .NET completa, System.Drawing.Imaging tiene funciones para los canales alfa y enmascaramiento:

http://www.codeproject.com/KB/GDI-plus /alphafx.aspx

Otros consejos

Una biblioteca bastante robusto vale la pena mirar es ImageMagick . Incluso tienen un puerto NET de la biblioteca. Se puede hacer cosas relacionadas con la transparencia, formas, y la superposición.

Yo podría tratar de usar los href="http://www.imagemagick.org/script/command-line-tools.php" rel="nofollow noreferrer"> versiones de línea de comandos primero ( el comando convert o composite, por ejemplo) para ver si se puede hacer que hagan lo que quiere. Si funciona, entonces usted debería ser capaz de poner en práctica esa misma funcionalidad utilizando sus bibliotecas.

scroll top