Convertir des images au format de fichier csv dans python
J'ai converti mon image dans un fichier csv et c'est comme une matrice, mais je veux que ce soit une seule ligne.
Comment puis-je convertir toutes les images dans le jeu de données dans un fichier csv (chaque image en une seule ligne).
Voici le code que j'ai utilisé:
from PIL import Image
import numpy as np
import os, os.path, time
format='.jpg'
myDir = "Lotus1"
def createFileList(myDir, format='.jpg'):
fileList = []
print(myDir)
for root, dirs, files in os.walk(myDir, topdown=False):
for name in files:
if name.endswith(format):
fullName = os.path.join(root, name)
fileList.append(fullName)
return fileList
fileList = createFileList(myDir)
fileFormat='.jpg'
for fileFormat in fileList:
format = '.jpg'
# get original image parameters...
width, height = fileList.size
format = fileList.format
mode = fileList.mode
# Make image Greyscale
img_grey = fileList.convert('L')
# Save Greyscale values
value = np.asarray(fileList.getdata(),dtype=np.float64).reshape((fileList.size[1],fileList.size[0]))
np.savetxt("img_pixels.csv", value, delimiter=',')
d'entrée :
http://uupload.ir/files/pto0_lotus1_1.jpg
de sortie:http://uupload.ir/files/huwh_output.png
- écrire dans un nouveau fichier, sur une seule ligne, le contenu de votre matrice ?
- pourriez-vous publier des données de l'échantillon?
- Salut @MohamedThasinah, j'ai posté la sortie & entrée.
- Salut @IMCoins, je n'ai pas votre point de vue! :\
Vous devez vous connecter pour publier un commentaire.
De votre question, je pense que vous voulez savoir sur
numpy.flatten()
. Vous souhaitez ajouterjuste avant votre np.savetxt appel. Il va s'aplatir le tableau à une seule dimension et il faut ensuite imprimer sur une seule ligne.
Le reste de votre question n'est pas claire bits, il implique que vous avez un répertoire complet des images jpeg et que vous voulez un moyen de lire à travers eux tous. Alors d'abord, obtenir une liste de fichier:
L'entourent votre code avec un
for fileName in fileList:
Édité pour ajouter un exemple complet
Notez que j'ai utilisé csv écrivain et changé votre float64 à ints (qui devrait être ok en tant que données de pixel est de 0 à 255
Que diriez-vous de convertir vos images 2D tableaux numpy et puis les écrire comme des fichiers txt avec .csv extensions et , comme délimiteurs?
Vous pourriez peut-être utiliser un code comme suit: