2012-06-20 22 views
5

Mi programa genera 3 imágenes diferentes y me gustaría combinarlas usando algunos ajustes de opacidad.Mezcla de dos imágenes diferentes en Qt

Primero tengo la imagen sin procesar, que ya convertí en un QPixmap para mostrarlo en un QGraphicsView.

First Image.

Luego, con esta imagen realizo algunos cálculos y genero un QImage porque necesito acceso básico a píxeles, también agrego una leyenda.

Second Image.

Lo que me gustaría hacer es poder combinar las dos imágenes mientras se puede modificar la opacidad. no tengo las herramientas para mostrar un ejemplo, debería tener este aspecto:

Third image

Pero con la imagen de datos mezclados con la opacidad y la primera imagen. También me gustaría que la leyenda permanezca 100% visible. Puedo crear una QImage diferente para la leyenda si es necesario.

También sé exactamente qué píxel debe considerarse transparente en lugar de blanco si se trata de eso.

En el futuro me gustaría ajustar la opacidad acaba con un control deslizante, así que creo que sería mejor si había una solución que no implica el cálculo de una nueva imagen cada vez ...

Cualquier cable sería apreciado ...

Respuesta

3

Puede usar QGraphicsPixmapItem :: setOpacity para establecer el valor de fusión alfa en el rango 0.0 ... 1.0 para la imagen de superposición y tener elementos gráficos separados para el fondo y el primer plano.

Si realmente necesita generar un mapa de puntos con la imagen combinada, puede usar setOpacity en QPainter antes de dibujar el mapa de puntos en él.

+0

Hice lo que me sugirió, pero tengo un último problema, el píxel blanco de mi QImage también está mezclado, ¿sabe cómo evitarlo? Me gustaría que el píxel blanco actúe como si fuera transparente. Una imagen de lo que tengo ahora: [Imagen] (http: // imgur.com/vEpxI) – Leo

+0

¿Por qué no coloca la imagen sin procesar sobre la parte superior de la imagen con la leyenda y modifica la opacidad de la imagen sin formato? ¿O hay elementos en la imagen sin procesar que deben establecerse transparentes? En ese caso, tendrá que modificar la imagen sin formato para establecer el valor alfa de estos píxeles en 0. – Pete

+0

Eso es lo que hice, pero todavía tengo el mismo problema: [como este] (http://imgur.com/a6qWk). Cambio la opacidad de la imagen sin formato y coloco debajo la leyenda y la visualización de datos, pero el blanco de la última imagen aún se mezcla con la imagen sin formato. – Leo

0

Hay un tipo de QImage que admite un canal alfa QImage :: Format_ARGB32_Premultiplied que mostrará las dos imágenes con una opacidad controlada por el alfa - simplemente dibuje las dos QImages sobre la parte superior de cada una otro

Pero está premultiplicado por lo que debe ajustar todos los píxeles si cambia A

+0

Tener que ajustar todos los píxeles cada vez que cambio A más tener que convertir el primer QPixmap a QImage realmente me molesta, me gustaría encontrar algo un poco más eficiente, pero voy a cavar su idea si no me pongo no encuentras nada más – Leo

+0

No es necesario convertir a un mapa de píxeles, la visualización QImage se realiza en HW de todos modos. –

+0

No sé qué es HW, así que es posible que no entienda completamente tu oración, pero ¿de qué mapa de palabras estás hablando? – Leo

Cuestiones relacionadas