2014-02-14 31 views
1

我試圖用MATLAB打開一個圖像文件(R2011b)。存儲bin文件(Xeneth)的程序說它具有「圖像(16位右對齊)(.png; .csv; *。bin)」數據類型。打開bin 16位右對齊

在MATLAB中,我試圖打開與文件:

fid=fopen('pathAndFile','r'); 
A=fread(fid,'inf','uint16'); 

不幸的是,口口聲聲說「用的fread無效的精度誤差。」 一個示例文件可以在這裏找到:https://www.dropbox.com/s/d8pj1lrhjsnbmvx/mHSdark_20ms_00014.bin

是否有人有一個想法可能會導致問題?

+1

[imread](http://www.mathworks.com.au/help/matlab/ref/imread.html)不會讀取它嗎? – Marcin

+0

不幸的不是。據我瞭解,imread無法讀取二進制文件 – Hellski

+0

我想如果你能提供你的文件的例子,將會更容易檢查發生了什麼。 – Marcin

回答

1

我在八度具有相同的錯誤消息,併除去'inf'解決了這個問題

close all; clear all; 

fid = fopen('mHSdark_20ms_00014.bin'); 
A = fread(fid, 'uint16'); 
fclose(fid); 

size(A) 

下面是一個執行結果

octave:5> test 
ans = 

    20480  1 
+0

刪除'inf'完成了這項工作。而不是它,它可能使用正確的sizeA [m,n]。例如:A = fread(fid,[64,320],'uint16'); – Hellski

1

這是因fread可選尺寸參數是數字,不是一個字符串。也就是說,而不是'inf',相應的輸入只是inf,一個數字,而不是一個字符串。當你輸入一個字符串到fread時,它認爲你指定了一個精度而不是一個大小。

但是,默認大小是inf,這就是爲什麼可以省略參數的原因。