2014-01-08 59 views
1

我想用fopen命令打開一個圖像。爲了讓它工作,我必須使用這個命令兩次。爲什麼這樣?這裏是我的代碼:爲什麼我需要在matlab中使用fopen兩次才能讀取圖像?

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

爲什麼不使用'imread',假設你有圖像處理工具箱? – MZimmerman6

+0

我很確定'imread'甚至不需要工具箱 - 它是像'imagesc'這樣的核心功能。 – nkjt

回答

3

第二次調用只是獲取先前打開的文件的文件名的完整路徑。從the documentation

filename = fopen(fileID)返回文件名前面調用fopen開業時由fileID指定的文件中。輸出文件名解析爲完整路徑。 fopen函數不會從文件中讀取信息來確定輸出值。

1

fopen不讀取數據。它只是打開文件,以便MATLAB可以讀取(或寫入)它。然後,您將使用fgetstextscan等函數以適當的格式讀取數據。它通常不用於圖像文件(除非您正在讀取數據以進行顯示或處理)。

實際上,在給定的代碼中,直到行imshow(opened)之前沒有讀入文件。由於opened是亞當答案中解釋的文件名,所以imshow將其讀入並顯示出來。但是,它不存儲在工作區變量中。正如在評論中提到的,你應該使用imread圖像文件:

I = imread(filename); 
figure; imshow(I); 
相關問題