我试图创建一系列的白色图像的视觉噪声,其中每个图像是相同的前一个,除了一部分随机像素的颜色交换(黑色像素变成白色,白色像素变成黑色)。
我可以单独生成图像,但现在我想将代码放入一个循环中,以便生成并保存300个图像的序列。不过,我遇到了一些麻烦。我的循环有很多问题,因为我试图将堆栈溢出的其他问题和答案组合在一起,我不完全理解我在做什么(我是编程新手)。
下面是我的代码:
file_names <- c("VN1", "VN2", "VN3", "VN4", "VN5")
next_image <- c()
for (i in 1:5) {
im <- if (i == 1) {
load.image("C:/Users/Ali/Desktop/VN_images/VN.png")
} else {
load.image(next_image)
}
df <- as.data.frame(im) %>%
mutate(colour = case_when(value == 0 ~ "black", TRUE ~ "white")) %>%
group_by(colour) %>%
mutate(value = replace(value, sample(row_number(), size = ceiling(0.05 * n()), replace = FALSE), 3))
df$value[df$value == 3 & df$colour == "black"] <- 1
df$value[df$value == 3 & df$colour == "white"] <- 0
df1 <- df[, -4]
new_image <- as.cimg(df1, dims = c(150,100))
save.image(new_image, "C:/Users/Ali/Desktop/VN_images/", file_names[i], ".png")
next_image <- c(next_image, new_image)
}
编辑:编辑问题以修复下面@nrennie突出显示的错误
我目前的主要问题似乎是保存代码生成的新图像-我需要每个新文件都有不同的名称,并且名称要保持它们生成的顺序-然后在下一次循环迭代中加载新图像。
使用上面的代码,我得到错误消息“Error in保存.image(new_image,“C:/Users/Ali/Desktop/VN_images/",:未使用的参数(“.png”)”
如果我将文件路径更改为“C:/Users/Ali/Desktop/VN_images/A.png”,代码将运行一次并保存名为“A.png”的图像,但也会返回错误“Error in if(is.url){:条件具有长度> 1”,因此在第二次迭代中加载新图像也出现问题。
我已经看过类似问题的几个以前的答案(例如,here,here,here,here和here),但我正在努力将答案应用到我自己的问题中。
1条答案
按热度按时间h7appiyu1#
我设法让这个工作通过试验和错误和一点帮助离线。张贴下面的代码,以防将来对其他人有帮助