我正在尝试使用fopen命令打开图像。我必须使用此命令两次才能使其正常工作。为什么会这样?这是我的代码:
fid = fopen(filename, 'r');
opened = fopen(fid);
figure,imshow(opened);
答案 0 :(得分:3)
第二个调用只获取先前打开的文件的文件名的完整路径。来自the documentation
filename = fopen(fileID)
返回上次调用fopen
时打开fileID
指定的文件时使用的文件名。输出文件名解析为完整路径。fopen
函数不读取文件中的信息以确定输出值。
答案 1 :(得分:1)
fopen
不读取数据。它只是打开文件,以便MATLAB可以读取(或写入)它。然后,您将使用fgets
或textscan
等函数以适当的格式读取数据。它通常不用于图像文件(除非您正在使用它们而不是读取数据以进行显示或处理)。
事实上,在给定的代码中,直到行imshow(opened)
才会读取文件。由于opened
是亚当答案中解释的文件名,imshow
会将其读入然后显示。但是,它不存储在工作空间变量中。如评论中所述,您应该将imread
用于图像文件:
I = imread(filename);
figure; imshow(I);