Программа BMP2AVI в Matlab - PullRequest
       26

Программа BMP2AVI в Matlab

0 голосов
/ 12 апреля 2010

HI Я написал программу, которая используется для работы (клянусь богом) и перестала работать. этот код берет серию BMP и конвертирует их в файл avi. это код:

path4avi='C:/FadeOutMask/'; %dont forget the '/' in the end of the path
pathOfFrames='C:/FadeOutMask/';
NumberOfFiles=1;
NumberOfFrames=10;

%1:1:(NumberOfFiles)
for i=0:1:(NumberOfFiles-1)
FileName=strcat(path4avi,'FadeMaskAsael',int2str(i),'.avi') %the generated file
aviobj = avifile(FileName,'compression','None'); 
aviobj.fps=10;

    for j=0:1:(NumberOfFrames-1)
    Frame=strcat(pathOfFrames,'MaskFade',int2str(i*10+j),'.bmp') %not a good name for thedirectory
    [Fa,map]=imread(Frame);
    imshow(Fa,map);
    F=getframe();
    aviobj=addframe(aviobj,F)
    end
aviobj=close(aviobj);
end    

И это ошибка, которую я получаю:

??? Error using ==> checkDisplayRange at 22
HIGH must be greater than LOW.

Error in ==> imageDisplayValidateParams at 57
common_args.DisplayRange = checkDisplayRange(common_args.DisplayRange,mfilename);

Error in ==> imageDisplayParseInputs at 79
common_args = imageDisplayValidateParams(common_args);

Error in ==> imshow at 199
  [common_args,specific_args] = ...

Error in ==> ConverterDosenWorkd at 19
    imshow(Fa,map);

по какой-то причине я не могу поместить его как сегменты кода. извините

спасибо

Ariel

Ответы [ 2 ]

0 голосов
/ 13 апреля 2010

Единственный способ воспроизвести ошибку, которую вы получаете, это когда map - это двухэлементный вектор, в котором первый элемент больше второго. Прежде всего обратите внимание, что функция IMSHOW может вызываться со следующим синтаксисом:

imshow(I,[low high]);

, в котором I - это изображение в градациях серого, а low и high указывают диапазон отображения для интенсивности пикселей. Дополнительный аргумент игнорируется, когда I является изображением RGB, но даже тогда значение high должно быть больше значения low или выдается ошибка (та, которую вы видите выше).

Что сбивает с толку, так это то, почему map будет двухэлементным вектором. При загрузке изображения с помощью IMREAD вывод map будет либо пустым (если изображение не является индексированным изображением), либо будет цветовой картой N-3. Я не могу вспомнить ситуацию, когда встроенный IMREAD вернул бы аргумент map всего с 2 элементами.

Исходя из того, что вы сказали, что работало , а теперь вдруг не работает, я бы предложил сначала проверить, не случайно ли вы создали m-файл где-то с именем imread , Это может привести к вызову новой функции imread вместо встроенной, что даст вам результаты, отличные от ожидаемых.

0 голосов
/ 13 апреля 2010

Индексируются ли изображения BMP? Я думаю, что параметр map применяется только к изображениям с индексированными цветными картами.

...