L'importation de fichiers PNG dans Numpy?
J'ai environ 200 niveaux de gris des images PNG stockées dans un répertoire de ce genre.
1.png
2.png
3.png
...
...
200.png
Je veux importer toutes les images PNG en Numpy et puis plus tard souhaitez appliquer k-des moyens pour générer un dictionnaire de correctifs à l'aide de k-means (scikit)
Quelqu'un sait une bibliothèque python qui pourrait charger ces images dans numpy sur une mouche?
Vous devez vous connecter pour publier un commentaire.
En utilisant simplement scipy, glob et avoir PIL installé (
pip install pillow
), vous pouvez utiliser scipy est imread méthode:Mise à JOUR
Selon la doc,
scipy.misc.imread
est obsolète à partir de SciPy 1.0.0, et sera supprimée dans la version 1.2.0. Pensez à utiliserimageio.imread instead
. Voir la réponse de Charles.glob.glob("./train/*.png")
scipy.misc.imread
est obsolète. Voir ma réponse ci-dessous!Peu en retard à la fête, mais la réponse actuelle est maintenant obsolète.
Selon la doc,
scipy.misc.imread
est obsolète à partir de SciPy 1.0.0, et sera supprimée dans la version 1.2.0. Pensez à utiliserimageio.imread
à la place.Exemple:
Vous pouvez également utiliser imageio à la charge de la fantaisie sources:
Edit:
Pour charger toutes les
*.png
fichiers dans un dossier spécifique, vous pouvez utiliser leglob
package:os
àls
et d'obtenir les noms de fichiers mais est-il une meilleure façon? Peut-être que vous devez modifier pour ajouterglob
glob
ne trouve que des fichiers dans votre arborescence de répertoires qui correspondent à un certain "globbing" chemin d'accès (qui peut contenir des caractères génériques, etc.) donc je ne suis pas sûr de ce que tu veux dire par "non valide png erreurs sont ignorées par glob" depuis glob regarde uniquement les noms de fichiers et ne sais rien à propos de vos images.imageio.imwrite
avecskimage.transform.resize
et il s'inscrit dans numpy!Cela peut aussi être fait avec le
Image
classe de la PIL bibliothèque:Si vous êtes le chargement des images, vous êtes probablement va être de travailler avec l'un ou les deux de
matplotlib
etopencv
de manipuler et de visualiser les images.Pour cette raison, j'ai tendance à utiliser leur image de lecteurs et ajouter ces listes, à partir de laquelle je fais un tableau NumPy.
La seule différence à prendre en compte est la suivante:
De sorte qu'une seule image qui est de 256*256 en taille serait de produire des matrices de taille (3, 256, 256) avec opencv et (256, 256, 3) à l'aide de matplotlib.
J'ai changé un peu et il a travaillé comme ceci, jetés dans un tableau unique, à condition que toutes les images sont de mêmes dimensions.
im = np.reshape(num_images,32,32,3)
qui fonctionne à merveille! 🙂