2017-10-24 3 views
0

Ich arbeite an einem Programm, um ein Bild aufzunehmen und es so zu glätten, dass es in eine CSV-Datei geschrieben werden kann. Dieser Teil funktioniert. Ich habe ein Problem, wenn ich versuche, die Zeile aus der CSV-Datei zurückzulesen. Ich versuche, das Bild zu rekonstruieren, und ich bekomme einen Fehler von "ValueError: kann Array von Größe 0 in Form (476,640,3) nicht umformen". Ich habe eine Beispielausgabe aus der CSV-Datei hinzugefügt.Fehler beim Zurücklesen eines Nummernfeldes von csv

sample output

  import csv 
      import cv2 
      import numpy as np 
      from skimage import io 
      from matplotlib import pyplot as plt 

      image = cv2.imread('Li.jpg') 

      def process_images (img): 
       img = np.array(img) 
       img = img.flatten() 
       return img 

      def save_data(img): 
       dataset = open('dataset.csv', 'w+') 
       with dataset: 
        writer = csv.writer(dataset) 
        writer.writerow(img) 

      def load_data(): 
       with open('dataset.csv', 'r') as processed_data: 
        reader = csv.reader(processed_data) 
        for row in reader: 
         img = np.array(row , dtype='uint8') 
         img = img.reshape(476,6, 3) 
       return img 

      def print_image_stats (img): 
       print (img) 
       print (img.shape) 
       print (img.dtype) 

      def rebuilt_image(img): 
       img = img.reshape(476,640,3) 
       plt.imshow(img) 
       plt.show() 
       return img  

      p_images = process_images(image) 

      print_image_stats(p_images) 

      r_image = rebuilt_image(p_images) 

      print_image_stats(r_image) 

      save_data(p_images) 

      loaded_data = load_data() 

      #r_image = rebuilt_image(load_data) 

      #print_image_stats(r_image) 
+0

* "... in eine CSV-Datei geschrieben. Dieser Teil funktioniert." * Wie sieht der Text in "data.csv" aus? Können Sie der Frage ein Snippet aus dieser Datei hinzufügen, sagen Sie die ersten 10 Zeilen? –

+0

Ich habe ein Beispiel aus der CSV-Datei hinzugefügt. Derzeit gibt es ein Bild, das in ein 1d-Array abgeflacht ist. –

+0

Verwenden Sie Pandas. Numpy Helfer – crook

Antwort

0

Die leeren Zeilen am Ende der Datei, die Sie erhebliche geschrieben sind. Sie werden vom CSV-Objekt reader als Zeilen betrachtet und in Ihrer for-Schleife wiederholt. Es gibt also einen Durchlauf durch die Schleife, in dem eine leere Zeile in ein Array der Größe Null umgewandelt wird, da die Zeile keine Elemente enthält. Größenänderungen, die offensichtlich fehlschlagen.

Entfernen Sie entweder die Zeilen aus der CSV-Datei oder verwenden Sie direkt die np.loadtxt-Funktion unter Angabe der Option delimiter=','.

+0

danke es hat geklappt. –

Verwandte Themen