2014-02-14 2 views
1

Я пытаюсь открыть файл изображения с помощью MATLAB (R2011b). Программа, в которой хранится файл bin (Xeneth), говорит, что она имеет тип данных «Изображения (выравнивание по 16 бит вправо) (.png; .csv; *. Bin)».open bin 16-bit right aligned

В MATLAB, я пытаюсь открыть файл с:

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

К сожалению, он продолжает говорить "Ошибка при помощи Fread Invalid точности." Пример файла можно найти здесь: 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' выполнило эту работу. Вместо него можно использовать правильный размер A [m, n]. например: A = fread (fid, [64,320], 'uint16'); – Hellski

1

Это происходит потому, что дополнительный размер аргумент fread является числовой, а не строка. То есть вместо 'inf' соответствующий ввод - это только inf, число, а не строка. Когда вы вводите строку в fread, она думает, что вы указываете точность вместо размера.

Однако размер по умолчанию inf, поэтому аргумент может быть опущен.

Смежные вопросы