为什么我需要在matlab中使用fopen两次才能读取图像?

时间:2014-01-08 19:28:08

标签: image matlab fopen

我正在尝试使用fopen命令打开图像。我必须使用此命令两次才能使其正常工作。为什么会这样?这是我的代码:

  fid = fopen(filename, 'r');
  opened = fopen(fid);
  figure,imshow(opened);

2 个答案:

答案 0 :(得分:3)

第二个调用只获取先前打开的文件的文件名的完整路径。来自the documentation

  

filename = fopen(fileID)返回上次调用fopen时打开fileID指定的文件时使用的文件名。输出文件名解析为完整路径。 fopen函数不读取文件中的信息以确定输出值。

答案 1 :(得分:1)

fopen不读取数据。它只是打开文件,以便MATLAB可以读取(或写入)它。然后,您将使用fgetstextscan等函数以适当的格式读取数据。它通常不用于图像文件(除非您正在使用它们而不是读取数据以进行显示或处理)。

事实上,在给定的代码中,直到行imshow(opened)才会读取文件。由于opened是亚当答案中解释的文件名,imshow会将其读入然后显示。但是,它不存储在工作空间变量中。如评论中所述,您应该将imread用于图像文件:

I = imread(filename);
figure; imshow(I);