我正在编写一个生成一系列图像的函数。我正在使用imwrite函数将每个图像写入文件:
Ecc=sqrt(real(E(:,:,1)).^2+real(E(:,:,2)).^2+real(E(:,:,3)).^2+imag(E(:,:,1)).^2+imag(E(:,:,2)).^2+imag(E(:,:,3)).^2);
clf
Q=imagesc(nx/rad,ny/rad,Ecc);
if i==1
cl=caxis;
else
caxis(cl)
end
imwrite(Q,['Frame-',num2str(i),'.tif'],'tif');
但我没有得到图像。生成的文件很好,但它们只是尺寸为1x1的白色图像。有什么帮助吗? 谢谢
答案 0 :(得分:4)
在imwrite
而不是Ecc
上使用Q
。 imagesc
的输出(我记得)是图的句柄,这不是你想要写出来的。写下Ecc
代替。
答案 1 :(得分:3)
添加到user3817401写的内容。
完成白色图像可能是因为数据在发送到imwrite之前未被缩放。请考虑以下事项:
Ecc = (Ecc - min(min(Ecc))) / (max(max(Ecc)) - min(min(Ecc)));
在imwrite之前。这将保证图像在0-1范围内并且应该解决问题。
答案 2 :(得分:1)
函数imagesc返回一个句柄(将其存储为Q),而不是缩放图像数据。然后,函数imwrite将Q解释为图像。因为它是一个句柄,它只是1x1,它的值作为图像没有意义。尝试根据需要缩放Ecc然后再写一次。