【问题标题】:How do I load my all JPEG images from a folder to a R variable?如何将文件夹中的所有 JPG 图像加载到 R 变量中?
【发布时间】:2019-09-10 02:03:46
【问题描述】:

我想要“train”文件夹中的 R 变量中的所有图像。共有 18539 张图片,图片名称分别为 (0.jpg, 1.jpg,...... 18539.jpg)。

当我的图像较少时,我曾经这样做过。当我们有很多图像时,有没有更有效的方法?

Img <- c("train/0.jpg","train/1.jpg.........")
trainImg <- []
for (i in 1:18) 
{
  trainImg[[i]] <- readImage(Img[i])
}

即使我们不知道一个文件夹有多少图像,我也想加载所有图像。该函数应该加载一个文件夹中的所有图像并将它们存储在一个列表中。

【问题讨论】:

  • 也许你正在寻找lapply:如果Img 向量设置正确,myImageList &lt;- lapply(Img, readImage) 应该返回一个图像列表。
  • 是的,但在此之前,我需要将他们的名字存储在一个向量中,然后通过编号加载图像。有什么方法可以在不指定名称的情况下存储它们?就像我在 Img 变量中所做的那样。
  • 不完全清楚你在问什么,但也许你想要dir:img &lt;- dir(full.names=TRUE)
  • 我正在做的方式,我可以通过这个print(trainImg[[1]]) 访问图像,它可以帮助你知道我想要什么。现在我在一个文件夹中有很多图像,所以我不能像Img &lt;- c("train/0.jpg","train/1.jpg.........") 这样存储它们。那么有什么方法可以存储我的所有图像并可以像这样在脚本中访问它们print(trainImg[[1]])
  • train 是文件夹名称,图片名称是这样的0.jpg, 1.jpg,...... 18539.jpg

标签: r image jpeg


【解决方案1】:

要自动创建文件名,请尝试以下操作:

 filenames<-paste0("train/", 0:18539, ".jpg")

这将创建列表:

[1] "train/0.jpg"  "train/1.jpg"  "train/2.jpg"  "train/3.jpg" ....

然后您可以按照 cmets 中的建议将此向量传递给 lapply 函数。

如果您想要目录中的文件列表,请使用list.files 函数。

 filenames<-list.files("train/", pattern=".jpg")

【讨论】:

  • 在执行此操作时paste0("train/", 0:18539, ".jpg") 我在图像文件名中得到了 train/。我使用 train/ 来设置目录,以便它从火车名称文件夹中选择图像。
  • 使用list.files 避免潜在的错误并获取那里的文件名。
  • @AdarshPawar,请参阅上面的编辑,我认为这回答了您的问题。
猜你喜欢
  • 1970-01-01
  • 2012-06-24
  • 2019-08-01
  • 2013-09-01
  • 2011-12-09
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多