循环为R中的灰度png文件

时间:2016-03-30 18:21:38

标签: r file loops png

我读了png文件28x28px,然后选择灰度:

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

现在我尝试在某个文件夹中为更多png文件制作循环:

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

但它不起作用:(

  

img [,,] 1出错:维数不正确

1 个答案:

答案 0 :(得分:0)

lapply会创建一个图片列表,因此在您的情况下,img[[1]]是第一张图片,而img[[10]]是第10张图片。尝试循环遍历列表中的每个图像。因此,如果您想对图像1执行添加操作,则需要执行以下操作:

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

对列表中的所有项目执行此操作。

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
}

现在结果是所有图像的结果列表。