如何将所有图像保存在单独的文件夹中?

时间:2015-11-25 14:36:19

标签: r

所以,我正在运行以下代码:

dirtyFolder = "Myfolder/test"
filenames = list.files(dirtyFolder, pattern="*.png")
for (f in filenames)
{
    print(f)
    imgX = readPNG(file.path(dirtyFolder, f))
    x = data.table(img2vec(imgX), kmeansThreshold(imgX))
    setnames(x, c("raw", "thresholded"))
    yHat = predict(gbm.mod, newdata=x, n.trees = best.iter)
    img = matrix(yHat, nrow(imgX), ncol(imgX))
    img.dt=data.table(melt(img))
    names.dt<-names(img.dt)
    setnames(img.dt,names.dt[1],"X1")
    setnames(img.dt,names.dt[2],"X2")
    Numfile = gsub(".png", "", f, fixed=TRUE)
    img.dt[,id:=paste(Numfile,X1,X2,sep="_")]
    write.table(img.dt[,c("id","value"),with=FALSE], file = "submission.csv", sep = ",", col.names = (f == filenames[1]),row.names = FALSE,quote = FALSE,append=(f != filenames[1]))

    # show a sample
    if (f == "4.png")
    {
        writePNG(imgX, "train_101.png")
        writePNG(img, "train_cleaned_101.png")
    }
}

它的作用基本上是将输入图像作为输入图像,并从中消除噪声。这只是应用从训练数据集(此处未显示)准备的算法的代码的后半部分。

现在,我无法弄清楚,如何为test文件夹中的每个图像保存已清理的图像。也就是说,我希望为文件夹中的每个图像保存已清理的图像,而不仅仅是4.png图像。如果输入图像的名称为4_cleaned.png,则输出图像的名称应为4.png,并且应将其保存在同一目录中的单独文件夹中。也就是说,如果输入图像的名称为x.png,则输出图像的名称应为x_cleaned.png并保存在单独的文件夹中。我该怎么做?

Tldr;我只想将每个文件名为img的变量保存为number_cleaned.png,其中number对应于原始文件名。这些新文件应保存在单独的文件夹中。

1 个答案:

答案 0 :(得分:1)

  

Tldr;我只想将每个文件名的名为img的变量保存为number_cleaned.png,其中number对应于原始文件名。这些新文件应保存在单独的文件夹中。

好吧,所以使用file.pathpastesprintf等函数构造输出文件名:

folder_name = 'test'
output_filename_pattern = file.path(folder_name, '%s_cleaned.png')

remove_extension = function (filename)
    gsub('\\.[^.]$', '', filename)

for (f in filenames) {
    # … your code her …

    new_filename = sprintf(output_filename_pattern, remove_extension(f))
    # … save file here …
}