Combiner les 3 tableaux numpy d'une image RVB en Python
J'ai donc un ensemble de données qui je suis en mesure de convertir au formulaire distinct des tableaux numpy de R, G, B bandes. Maintenant, j'ai besoin de les combiner entre eux pour former une image RVB.
J'ai essayé d '"Image" pour faire le travail, mais il nécessite de la "mode" d'être attribuée.
J'ai essayé de faire un truc. Je voudrais utiliser l'Image.fromarray() pour prendre la matrice de l'image, mais à ce qu'il atteigne " F " mode par défaut lorsque l'Image.de fusion exige "de L' images en mode de fusion. Si je déclarer l'attribut de tableau dans fromarray() à 'L' à la première place, tous les R, G, B, les images se déforment.
Mais, si je enregistrer les images et puis les ouvrir et puis de fusionner, il fonctionne très bien. L'Image se lit l'image avec L' mode.
Maintenant, j'ai deux questions.
Tout d'abord, je ne pense pas que c'est une manière élégante de faire le travail. Donc, si quelqu'un connaît la meilleure façon de le faire, s'il vous plaît dites
Deuxièmement, Image.ENREGISTRER ne fonctionne pas correctement. Suivantes sont les erreurs que j'ai le visage:
In [7]: Image.SAVE(imagefile, 'JPEG')
----------------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/media/New Volume/Documents/My own works/ISAC/SAMPLES/<ipython console> in <module>()
TypeError: 'dict' object is not callable
S'il vous plaît suggérer des solutions.
Et s'il vous plaît l'esprit que l'image est d'environ 4000x4000 tableau de taille.
Vous devez vous connecter pour publier un commentaire.
Je ne comprends pas vraiment votre question, mais voici un exemple de quelque chose de similaire, j'ai fait récemment, qui semble comme il pourrait aider:
J'espère que ça aide
Aussi de convertir des flotteurs 0 .. 1 uint8 s,
Convertir les tableaux numpy pour
uint8
avant de les transmettre àImage.fromarray
Par exemple. si vous avez des flotteurs dans l'intervalle [0..1]:
Votre distorsion, je crois, est causée par la façon dont vous êtes le fractionnement de l'image d'origine dans ses bandes, et ensuite le transformer de nouveau avant de la mettre en fusion;
cela fonctionne bien !
Ce code ne marche pas créer de tableau 3d si vous passez 3 canaux. 2 canaux restent.