J'ai essayé d'utiliser la fonction imshow de matplotlib.pyplot et cela fonctionne parfaitement pour afficher des images en niveaux de gris. Lorsque j'ai essayé de représenter des images RVB, cela change les couleurs, montrant une couleur plus bleue.
Voir un exemple:
import cv2
import matplotlib.pyplot as plt
lena=cv2.imread("lena.jpg")
plt.imshow(lena)
plt.show()
L'image résultante est quelque chose comme this
Alors que l'image d'origine est this
S'il s'agit d'un élément lié à la palette de couleurs, existe-t-il un moyen de le faire fonctionner avec des images RVB?
Cela a fonctionné pour moi:
plt.imshow(lena[:,:,::-1]) # RGB-> BGR
Même idée mais une approche plus agréable et plus robuste consiste à utiliser "Ellipsis" proposé par @ rayryeng :
plt.imshow(lena[...,::-1])
OpenCV représente les images en BGR par opposition au RVB que nous attendons. Comme il est dans l'ordre inverse, vous avez tendance à voir la couleur bleue dans les images. Essayez d'utiliser la ligne suivante (sous le commentaire dans le code) pour convertir de BGR en RVB:
import cv2
import matplotlib.pyplot as plt
lena=cv2.imread("lena.jpg")
#plt.imshow(lena)
#plt.axis("off")
#Converts from BGR to RGB
plt.imshow(cv2.cvtColor(lena, cv2.COLOR_BGR2RGB))
plt.show()