2017-08-06 1 views
0

Ich versuche, die Sektoren von allen Bildern zu beschneiden (Bilder enthält kreisförmige Objekte) und versuche, sie mit anderen Namen in der Schleife zu speichern. Hier ist meine Code mit python 3.6 und scikit BildSektoren aus allen Bildern zuschneiden und mit verschiedenen Namen in der Schleife speichern

for filename in os.listdir("directory1"): 
    image=io.imread(os.path.join("path1",filename)) 
'''get coordinates for polygon & circle,create masks for circle and polygon''' 
'''(r0,c0),(r1,c1),(r2,c2) are circle center , coord's of sector''' 
    for k in range(7): 
    imagevar=image 
    rr, cc = draw.polygon([r0, r1[K], r1[K+1], r0], 
         [c0, c1[K], c1[K+1], c0], shape=mask_poly.shape)    
    mask_poly[rr, cc] = 1 
    image_mask = mask_circle & mask_poly 
    mk=numpy.logical_not(image_mask) 
    imagevar[mk]=0 
    path2='*pathforsamples*' #different from path1 
    NewfileNameToSave = *path2*+fileNameToSave + '_'+ str(K+1) + '.jpg' 
    io.imsave(NewfileNameToSave,imagevar) 
    mask_poly[rr, cc] = 0 

Es gibt kein Problem mit den Dateinamen, aber ich habe Probleme mit den Bildern. Ich erhalte den ersten Sektor von der ersten Iteration, aber ab der zweiten Iteration erhalte ich ein schwarzes Bild und eine Warnung, die besagt, dass "filename_2.jpg ein Bild mit niedrigem Kontrast ist". Ich denke, der erste Sektor wird für die verbleibenden Iterationen verwendet, obwohl ich "imagevar = image" am Anfang der Schleife zugewiesen habe. Also, gibt es eine Möglichkeit, das Bild nach "imsave" oder einem Fehler im Code zu entladen?

Antwort

0

fand die Lösung für mein Problem. In der zweiten for-Schleife können wir das Bild erneut unter Verwendung von imread

lesen
Verwandte Themen