L'affichage de plusieurs images dans un IPython Notebook cellule?
Si j'ai plusieurs images (chargé comme des tableaux NumPy) comment puis-je afficher le dans un IPython Notebook cellule?
Je sais que je peux utiliser plt.imshow(ima)
pour afficher un image... mais je veux montrer plus d'un à la fois.
J'ai essayé:
for ima in images:
display(Image(ima))
Mais je viens d'obtenir un bris du lien de l'image:
- Si vous utilisez
imshow
est une option, pourquoi ne pas l'utiliser en combinaison avecsubplots
pour créer un tableau d'images? Ne les tailles de l'image varient beaucoup? - Je pourrais utiliser des sous-intrigues... mais que devient délicat quand je suis juste à expérimenter: j'ai besoin de définir le nombre de lignes et de colonnes, et puis si il y a trop de lignes et de colonnes que je dois augmenter le chiffre de la taille pour s'assurer qu'ils sont chacun individuellement, de taille raisonnable, et j'ai besoin d'attendre pour l'ensemble de la figure à rendre avant que je puisse voir les images individuelles (par opposition à leur affiché en tant qu'elles sont générées)
- Avez-vous l'utilisation de python 3.3? Et c'est quelque chose écrit dans la console?
- Non, et c'est Py2.7. Et que voulez-vous dire, "est quelque chose d'écrit à la console"? Voulez-vous dire quand je vais à
display(Image(…))
? Dans ce cas, il ressemble à l'image a quelque chose commesrc="data:np.array([…])"
.
Vous devez vous connecter pour publier un commentaire.
Réponse courte:
appel
plt.figure()
pour créer de nouveaux chiffres si vous voulez plus d'un dans une cellule:Mais de clarifier la confusion avec
Image
:IPython.display.Image
est pour l'affichage de l'Image fichiers, pas de tableau de données. Si vous souhaitez afficher des tableaux numpy avec l'Image, vous devez les convertir en un fichier au format de la première (la plus facile avec PIL):Un ordinateur portable illustrant les deux approches.
%matplotlib inline
si vous voulez que les images apparaissent.plt.figure()
avant chaque chaque image?C'est facile et fonctionne:
display(*images)
plt.imshow()
. Il ne semble pas possible de contrôler la taille.Mise en page horizontale
Réponse courte
Réponse longue
Vous pouvez afficher plusieurs images dans un seul IPython Notebook cellule à l'aide de l'affichage HTML et fonctions. Vous avez besoin pour créer l'ensemble de html les balises img comme une chaîne de caractères comme suit
Voir un exemple d'utilisation de http://nbviewer.ipython.org/github/PBrockmann/Dodecahedron
Vous pouvez avoir besoin de rafraîchir votre navigateur (maj + charge) pour voir les nouvelles images, si elles ont été
modifié à partir d'une cellule précédente.
basé sur @Michael réponse
En quelque sorte liés à cette question (et depuis que j'ai été dirigé vers cette réponse quand j'ai essayé de le résoudre), j'ai été en mesure de résoudre un problème similaire, en tapant simplement le fichier complet-chemin lors de l'appel de
Image()
. Dans mon cas, j'ai dû choisir une image aléatoire à partir d'un autre dossier chemins sont stockés dans une listeyour_folder
et de les afficher.os.path.join
oupathlib.Path
pour assembler les chemins d'accès dans un système d'exploitation de façon agnostique.Si vous n'avez pas l'esprit un supplément de dépendance ici est une de deux liner à l'aide de scikit-image:
Ensemble
multichannel=True
pour les images en couleur etmultichannel=False
pour les images en niveaux de gris.basé sur @ChaosPredictor réponse
puis
Les réponses dans ce thread qui m'a aidé: Combiner plusieurs images horizontalement avec Python
Le problème de l'utilisation matplotlib était les images affichées à la définition était vraiment mauvais. J'ai adapté l'une des réponses à mes besoins:
Le code suivant affiche les images concaténées horizontaly dans un jupyter ordinateur portable. Remarquez la ligne de commentaires avec le code pour enregistrer l'image si vous souhaitez que.