2016-03-30 7 views
0

I Datei 28x28px lesen png und dann Graustufen I wählen:Schleife für Graustufen- png-Dateien in R

img = readPNG("../Folder/image.png") 
pic <- img[,,1]+img[,,2]+img[,,3] 
pic <- pic/max(pic)' 
result = pic*255 
result 

und ich versuche jetzt Schleife für mehr png-Dateien in einigen Ordnern machen:

img = lapply(sprintf("image%i.png", 1:10), png::readPNG) #select 10 png files 
pic <- img[,,1]+img[,,2]+img[,,3] 
pic <- pic/max(pic)' 
result = pic*255 
result 

Aber es funktioniert nicht :(

Fehler bei img [, 1]: falsche Anzahl von Dimensionen

Antwort

0

lapply erstellt eine Liste von Bildern, so in Ihrem Fall img[[1]] ist das erste Bild und img[[10]] ist das 10. Bild. Versuchen Sie, jedes Bild in der Liste durchzublättern. Also, wenn Sie das tun, um die Additionsoperation auf dem Bild 1, tun wollten, würden Sie tun müssen:

pic <- img[[1]][,,1]+img[[1]][,,2]+img[[1]][,,3] 

dies in der Liste über alle Einzelteile zu tun.

img.list <- lapply(sprintf("../Folder/image%i.png", 1:10), png::readPNG) #select 10 png files 
results <- list() 
for (img in img.list) { 
    pic <- img[,,1]+img[,,2]+img[,,3] 
    pic <- pic/max(pic) 
    results[[length(results)+1]] <- pic*255 
} 

Jetzt Ergebnis ist eine Liste der Ergebnisse für alle Bilder.

+0

Vielen Dank! Aber ich wähle aus 28x28 Matrix von png spezifischen 3x3 Matrizen und ich brauche Schleife durch Matrix, nicht Liste. wenn ich code von result = c (result, pic * 255) zu result = pic * 255 ändere dann ist das Ergebnis nur eine Matrix, nicht alle 10 – Faino

+0

Sorry, sollte behoben sein. Jedes ith Bild ist jetzt in 'results [[i]]' – TomNash

+0

Vielen Dank für Ihre Hilfe. Ich schätze es. Ich habe eine Frage - warum Ergebnis "o" in meinem Code geben 10x gleiche Matrix, wenn ich 10 verschiedene Matrizen (10xpng Datei 28x28px) habe? Dateinamen <- Sys.glob ("*. Png") o <-array (0, c (28,28, Länge (Dateinamen))) für (i in 1: Länge (Dateinamen)) { img <-readPNG (Dateinamen) pic <-img [,, 1] + img [,, 2] + img [,, 3] pic <- pic/max (pic) o [,, i] <- pic * 255 } – Faino