No dudes en compartir nuestra página y códigos con otro, necesitamos de tu ayuda para ampliar esta comunidad.
Solución:
Tu problema está en el hecho de que skimage.io.imread
carga la imagen como RGB (o RGBA), pero OpenCV asume que la imagen es BGR o BGRA (BGR es el formato de color predeterminado de OpenCV). Esto significa que los aviones azul y rojo se voltean.
Imágenes de 3 canales
Probemos esto con la siguiente imagen de prueba simple:
Primero probemos tu algoritmo original:
import skimage.io
import cv2
img = skimage.io.imread('sample.png')
cv2.imwrite('sample_out_1.png', img)
Obtenemos el siguiente resultado:
Como puede ver, los canales rojo y azul están visiblemente intercambiados.
El primer enfoque, suponiendo que aún desee usar skimage para leer y cv2 para escribir, es usar cv2.cvtColor
para convertir de RGB a BGR.
Dado que los nuevos documentos de OpenCV no mencionan la sintaxis de Python, en este caso también puede usar la referencia adecuada para 2.4.x.
import skimage.io
import cv2
img = skimage.io.imread('sample.png')
cv2.imwrite('sample_out_2.png', cv2.cvtColor(img, cv2.COLOR_RGB2BGR))
Ahora obtenemos la siguiente salida:
Una alternativa es simplemente usar OpenCV — use cv2.imread
para cargar la imagen. En este caso estamos trabajando solo con imágenes BGR.
NÓTESE BIEN: No proporcionar ninguna bandera significa cv2.IMREAD_COLOR
se usa de forma predeterminada, es decir, la imagen siempre se carga como una imagen de 3 canales (eliminando cualquier canal alfa potencial).
import cv2
img = cv2.imread('sample.png')
cv2.imwrite('sample_out_3.png', img)
Imágenes de 4 canales
De su captura de pantalla, parece que tiene una imagen de 4 canales. Esto significaría RGBA en skimage y BGRA en OpenCV. Los principios serían similares.
- Utilice el código de conversión de color
cv2.COLOR_RGBA2BGRA
- O usar
cv2.imread
con banderacv2.IMREAD_UNCHANGED
Sección de Reseñas y Valoraciones
Si piensas que te ha resultado de ayuda nuestro artículo, sería de mucha ayuda si lo compartes con otros entusiastas de la programación y nos ayudes a extender esta información.