我想用fopen命令打開一個圖像。爲了讓它工作,我必須使用這個命令兩次。爲什麼這樣?這裏是我的代碼:爲什麼我需要在matlab中使用fopen兩次才能讀取圖像?
fid = fopen(filename, 'r');
opened = fopen(fid);
figure,imshow(opened);
我想用fopen命令打開一個圖像。爲了讓它工作,我必須使用這個命令兩次。爲什麼這樣?這裏是我的代碼:爲什麼我需要在matlab中使用fopen兩次才能讀取圖像?
fid = fopen(filename, 'r');
opened = fopen(fid);
figure,imshow(opened);
第二次調用只是獲取先前打開的文件的文件名的完整路徑。從the documentation
filename = fopen(fileID)
返回文件名前面調用fopen
開業時由fileID
指定的文件中。輸出文件名解析爲完整路徑。fopen
函數不會從文件中讀取信息來確定輸出值。
fopen
不讀取數據。它只是打開文件,以便MATLAB可以讀取(或寫入)它。然後,您將使用fgets
或textscan
等函數以適當的格式讀取數據。它通常不用於圖像文件(除非您正在讀取數據以進行顯示或處理)。
實際上,在給定的代碼中,直到行imshow(opened)
之前沒有讀入文件。由於opened
是亞當答案中解釋的文件名,所以imshow
將其讀入並顯示出來。但是,它不存儲在工作區變量中。正如在評論中提到的,你應該使用imread
圖像文件:
I = imread(filename);
figure; imshow(I);
爲什麼不使用'imread',假設你有圖像處理工具箱? – MZimmerman6
我很確定'imread'甚至不需要工具箱 - 它是像'imagesc'這樣的核心功能。 – nkjt