Image 如何使用imwrite保存多个图像

Image 如何使用imwrite保存多个图像,image,matlab,image-processing,Image,Matlab,Image Processing,有人能帮我用imwrite保存生成的图像吗 source = 'C:\Y\'; im_number=5; for i=1:5 image{i}=im2double(imread([source,'Carbon_', num2str(i)],'tif')); image{i}=double(image{i}); B{i}= Sftfun(image{i}); B{i}=uint32(B{i}); imwrite(B{i},[source,'face_', num2str(i)],

有人能帮我用imwrite保存生成的图像吗

source = 'C:\Y\';
im_number=5; 
for i=1:5 
 image{i}=im2double(imread([source,'Carbon_', num2str(i)],'tif'));  
 image{i}=double(image{i});
 B{i}= Sftfun(image{i});
 B{i}=uint32(B{i});
 imwrite(B{i},[source,'face_', num2str(i)],'tif');
end

代码的问题是您正在将图像强制转换到
uint32
。如果试图将图像保存为
TIF
文件,则只能将其保存为8位或16位。参考MATLAB文档,您只能使用这两位深度进行保存。不支持32位深度

有关更多详细信息,请参阅MATLAB文档:

因此,可以将图像强制转换为8位或16位(通过
im2uint8
im2uint16
),也可以对图像进行规格化,使其从
[0,1]
(通过
im2double

我还对您的代码提出了一些意见,这些意见确实需要修改以提高可读性:

  • 不要将图像保存到名为
    image
    的单元格数组中。MATLAB有一个名为
    image
    的内置命令,它接收矩阵并将其作为图像显示在屏幕上。请记住,这与
    imshow
    不同。通过执行此赋值,您将阴影覆盖实际的
    图像
    命令,因此任何依赖此函数的脚本都将导致错误
  • im\u number
    似乎是一个未使用的变量。我不确定它的目的是什么,但我想说,删除这个声明也是安全的
  • 在前一行中,您已经将图像转换为
    double
    类型,请不要使用以下语句:
  • 图像{i}=double(图像{i}); 在一边 你似乎在这里问了一个类似的问题:


    此问题已经解决,因为您无法使用
    imwrite
    保存32位图像。但是,该线程中的某个人发布了一个解决方案,供您在MATLAB中使用。尝试使用它而不是
    imwrite

    请解释更多的错误,你会得到什么错误,等等。我们不是你的自愿编码者,这个网站不是这样工作的。你必须通过更好地解释你的问题和你迄今为止所做的尝试来分享你的理由。+1对于这样一个不费吹灰之力的问题的详细回答。@Tae SungShin:谢谢!:)很高兴再次见到你 image{i} = double(image{i});