1

Ich habe einen Ordner "Bilder-2", die mehr als 100 Unterordner hat, diese Unterordner bestehen aus einem Bild pro Ordner. def main() öffnet jedes Bild, und def run(img) nimmt das Bild und verarbeitet es, aber jetzt kann ich das Bild in seinem Unterordner nicht speichern.Iterative Ordner öffnen, bearbeiten und speichern Bild eins nach dem anderen

zB def main c: /Images-2/1/1.png (1 ist der Ordnername, so habe ich 100 Ordner in Bilder-2)

wenn Bedingung wird Bild speichern verarbeitet (null. png) im Ordner Images-2/1/

Wie funktioniert es für 100 Ordner, 1 Bild jeden Ordner?

def run(img): 
    data = img.load() 
    width, height = img.size 
    output_img = Image.new("RGB", (100, 100)) 
    Zero=np.zeros(shape=(100, 100),dtype=np.uint8) 

    for (x, y) in labels: 
      component = uf.find(labels[(x, y)]) 
      labels[(x, y)] = component 
      path='C:/Python27/cclabel/Images-2/' 
      if labels[(x, y)]==0: 
       Zero[y][x]=int(255) 
       Zeroth = Image.fromarray(Zero) 
       for root, dirs in os.walk(path): 
        print root 
        print dirs 
        Zeroth.save(path+'Zero'+'.png','png') 
def main(): 
    # Open the image 
    path="C:/Python27/cclabel/Images-2/" 
    for root, dirs, files in os.walk(path): 
     for file_ in files: 
      img = Image.open(os.path.join(root, file_)) 
      img = img.point(lambda p: p > 190 and 255) 
      img = img.convert('1') 
      (labels, output_img) = run(img) 

if __name__ == "__main__": main() 
+0

Wo ist die Variable 'labels' in' run' definiert? Ich würde denken, dass du "root" an "run" übergeben und dann "os.walk" von "run" entfernen und einfach "Zeroth.save" (os.path.join (root, 'Zero.png'), 'png') ', um das Bild" Zero "in demselben Verzeichnis zu speichern, aus dem Sie das Bild geladen haben. –

+0

das ist das Problem, ich kann es nicht auf den richtigen Pfad speichern Es dauert nur letzten Ordner Bild verarbeitet und speichert es auf jedem Ordner –

Antwort

0

Sie rufen zweimal os.walk. Das ist dein Problem. Das habe ich in meinem Kommentar gemeint:

def run(dirname, img): 
    data = img.load() 
    width, height = img.size 
    output_img = Image.new("RGB", (100, 100)) 
    Zero=np.zeros(shape=(100, 100), dtype=np.uint8) 

    for (x, y) in labels: 
     component = uf.find(labels[(x, y)]) 
     labels[(x, y)] = component 
     path = 'C:/Python27/cclabel/Images-2/' 
     if labels[(x, y)] == 0: 
      Zero[y][x] = 255 
      Zeroth = Image.fromarray(Zero) 
      Zeroth.save(os.path.join(dirname, 'Zero.png'), 'png') 


def main(): 
    path = "C:/Python27/cclabel/Images-2/" 
    for root, dirs, files in os.walk(path): 
     for file_ in files: 
      img = Image.open(os.path.join(root, file_)) 
      img = img.point(lambda p: p > 190 and 255) 
      img = img.convert('1') 
      (labels, output_img) = run(root, img) 


if __name__ == "__main__": 
    main() 
+0

Fehler: format = EXTENSION [ext] KeyError: '' –

+0

Der erste ist nur ein Durcheinander von Klammern, fixiere ich das in meinem Post. Für den zweiten Kommentar: Was meinst du? Könnten Sie bitte etwas näher ausführen? –

+0

Danke, dass es perfekt funktioniert –

Verwandte Themen