【发布时间】:2018-06-18 16:14:57
【问题描述】:
我在图像上使用 Canny 边缘检测。由于我原来的10张图片在路径文件夹中,C:\Users\X\Desktop\FoodRGB为01.jpg、02.jpg、03.jpg等等,所以我想将我所有的输出图片保存在文件夹C:\Users\X\Desktop\FoodCanny为01.jpg、@ 987654327@,03.jpg.
我认为我必须使用 imwrite() 函数将输出图像写入特定文件夹,但我不确定这个大主意。
我使用的以下代码将图像保存为0%d.jpg 在我手动创建的FoodCanny 文件夹中。
for k = 1:10
img = sprintf('C:\Users\X\Desktop\4\Food Canny\0%d.jpg',k);
imwrite(canny_image, 'C:\Users\X\Desktop\4\Food Canny\0%d.jpg');
end
【问题讨论】:
-
您的最后一行应该是
imwrite(canny_image, img);,因为您在img变量中使用sprintf构造字符串。 -
另外,您可以将创建
img的类似简化为使用fullfile,如下所示:img = fullfile('C:','Users','AHII','Desktop','4','Food Canny', [num2str(k) '.jpg']); -
您必须在
sprintf中的文件路径定义中使用双“\”(单个“\”被解释为转义序列 - 例如\n)。因此,在对imwrite的调用中,您必须使用您在img中拥有的字符串,而不是再次写入整个文件名。此外,您必须在for循环中拆分写入序列,以捕获文件名中的“数字”>= 10 的情况,否则它也会有0(010.jpg)
标签: matlab image-processing filepath edge-detection canny-operator