Saltar al contenido

Convertir imágenes a archivo csv en python

Posteriormente a consultar especialistas en esta materia, programadores de diversas áreas y maestros dimos con la respuesta al dilema y la dejamos plasmada en esta publicación.

Solución:

A partir de su pregunta, creo que quiere saber acerca de numpy.flatten(). quieres agregar

value = value.flatten()

justo antes de su llamada np.savetxt. Aplanará el array a una sola dimensión y luego debe imprimirse como una sola línea.

El resto de su pregunta no está claro, pero implica que tiene un directorio lleno de imágenes jpeg y desea una forma de leerlas todas. Así que primero, obtenga una lista de archivos:

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

El rodea tu código con un for fileName in fileList:

Editado para agregar un ejemplo completo
Tenga en cuenta que he usado el escritor csv y cambié su float64 a ints (que debería estar bien ya que los datos de píxeles son 0-255

from PIL import Image
import numpy as np
import sys
import os
import csv

#Useful function
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

# load the original image
myFileList = createFileList('path/to/directory/')

for file in myFileList:
    print(file)
    img_file = Image.open(file)
    # img_file.show()

    # get original image parameters...
    width, height = img_file.size
    format = img_file.format
    mode = img_file.mode

    # Make image Greyscale
    img_grey = img_file.convert('L')
    #img_grey.save('result.png')
    #img_grey.show()

    # Save Greyscale values
    value = np.asarray(img_grey.getdata(), dtype=np.int).reshape((img_grey.size[1], img_grey.size[0]))
    value = value.flatten()
    print(value)
    with open("img_pixels.csv", 'a') as f:
        writer = csv.writer(f)
        writer.writerow(value)

¿Qué tal si convierte sus imágenes en matrices numpy 2D y luego las escribe como archivos txt con .csv extensiones y , como delimitadores?

Tal vez podrías usar un código como el siguiente:

np.savetxt('np.csv', image, delimiter=',')

import numpy as np
import cv2
import os

IMG_DIR = '/home/kushal/Documents/opencv_tutorials/image_reading/dataset'

for img in os.listdir(IMG_DIR):
        img_array = cv2.imread(os.path.join(IMG_DIR,img), cv2.IMREAD_GRAYSCALE)

        img_array = (img_array.flatten())

        img_array  = img_array.reshape(-1, 1).T

        print(img_array)

        with open('output.csv', 'ab') as f:

            np.savetxt(f, img_array, delimiter=",")

Te invitamos a añadir valor a nuestra información tributando tu experiencia en las acotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *