0

嗨,我写了一个用来工作的程序(向上帝发誓)并且已经停止工作。此代码采用一系列 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);

出于某种原因,我不能把它作为代码段。对不起

谢谢你

爱丽儿

4

2 回答 2

0

我能够重现您得到的错误的唯一方法是何时map是第一个元素大于第二个元素的双元素向量。首先请注意,可以使用以下语法调用函数IMSHOW :

imshow(I,[low high]);

其中I是灰度图像,lowhigh指定像素强度的显示范围。当I是 RGB 图像时,额外的参数会被忽略,但即便如此, 的值也high必须大于 的值,low否则会引发错误(您在上面看到的那个)。

令人困惑的是为什么map会是一个二元素向量。使用IMREAD加载图像时,map输出将为空(如果图像不是索引图像)或为 N×3 颜色图。我想不出内置IMREAD 会返回map只有 2 个元素的参数的情况。

基于你说它正在工作,现在突然不行了,我建议你先检查一下你是否无意中在某个地方创建了一个名为imread. 这样做可能会导致imread调用新函数而不是内置函数,从而为您提供与预期不同的输出。

于 2010-04-13T15:36:59.267 回答
0

BMP 图像是否已编入索引?我认为该map参数仅适用于具有索引颜色图的图像。

于 2010-04-12T23:00:44.183 回答