2016-03-30 26 views
0

yılında gri tonlama png dosyaları için ben dosya 28x28px png okumak ve sonra gri tonlama belirleyin:Döngü R

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

Ve şimdi bazı klasörde daha png dosyaları için döngü yapmak deneyin:

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 

Ama çalışmıyor :(

hata img [burada, 1]: boyutların sayısı yanlış

cevap

0

lapply görüntülerin bir listesini oluşturur, bu nedenle sizin durumda img[[1]] ilk resmi ve img[[10]], 10. görüntüdür. Listedeki her görüntüye döngü yapmayı deneyin. Eğer yapmak istediği takdirde görüntüde 1 ilave işlemi yapmak Yani, yapmanız gerekir:

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

listedeki tüm öğeleri üzerinde yapmak için.

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 
} 

Şimdi sonuç tüm resimler için sonuçların bir listesidir.

+0

Çok teşekkürler! Fakat png spesifik 3x3 matrislerinin 28x28 matrisinden birini seçiyorum ve matristeki döngüye ihtiyacım var, listeye değil. sonucu = c (sonuç, resim * 255) sonucu = pic * 255 sonucunu değiştirdiğimde, sonuç sadece bir matrisle sonuçlanır, tüm 10 – Faino

+0

Üzgünüm, düzeltilmelidir. Her ith imdi artık "sonuç [[i]]' – TomNash

+0

Yardımlarınız için teşekkür ederiz. Bunu takdir ediyorum. Bir sorum var - 10 farklı matris (10xpng dosya 28x28px) olduğunda, kodumdaki "o" sonucu 10x aynı matrisi verir neden? dosya <- Sys.glob o <-array (0, C (28,28, uzunluğu (dosya))), (i, 1: uzunluk (dosya)) için { img ("* PNG"). <-readPNG (dosya adları) resim <-img [,, 1] + img [,, 2] + img [,, 3] resim <- resim/maks (resim) o [,, i] <- pic * 255 } – Faino