R中的灰度png文件循环

Loop for grayscale png files in R

我读取 png 文件 28x28px 然后我 select 灰度:

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

但它不起作用:(

Error in img[, , 1] : incorrect number of dimensions

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
}

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