【问题标题】:How to automatically save the output image file in a specified folder?如何自动将输出图像文件保存在指定文件夹中?
【发布时间】:2018-06-18 16:14:57
【问题描述】:

我在图像上使用 Canny 边缘检测。由于我原来的10张图片在路径文件夹中,C:\Users\X\Desktop\FoodRGB01.jpg02.jpg03.jpg等等,所以我想将我所有的输出图片保存在文件夹C:\Users\X\Desktop\FoodCanny01.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


【解决方案1】:

假设您想获取C:\Users\Asus\Pictures\Screenshots 中所有屏幕截图的精巧边缘并将它们保存到另一个文件夹D:\. 您可以这样做:

clc;clear all;
fpath = fullfile('C:\Users\Asus\Pictures\Screenshots','*.png');
img_dir = dir(fpath);
for k=1:length(img_dir)
    input_image=strcat('C:\Users\Asus\Pictures\Screenshots\',img_dir(k).name);
    original = rgb2gray(imread(input_image));
    original= edge(original,'canny');
    imwrite(original,strcat('D:\',sprintf('edge(%d).jpg',k)));
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2020-12-25
    • 2015-06-24
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多