所以,我正在运行以下代码:
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
对应于原始文件名。这些新文件应保存在单独的文件夹中。
答案 0 :(得分:1)
Tldr;我只想将每个文件名的名为img的变量保存为number_cleaned.png,其中number对应于原始文件名。这些新文件应保存在单独的文件夹中。
好吧,所以使用file.path
和paste
或sprintf
等函数构造输出文件名:
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 …
}