我是MATLAB新手。我使用imwrite写在用户选择的特定文件夹中的图像,但它给我以下错误
Error using imwrite>parse_inputs
The colormap should have three columns.
Error in imwrite (line 440)
[data, map, filename, format, paramPairs] = parse_inputs(varargin{:});
我的代码
imwrite(latest_data,userpath,'bmp');
其中userpath如下所示:
1条答案
按热度按时间olmpazwi1#
TL;DR
你需要在文件路径中使用一个字符(
'single quotes'
)而不是字符串("double quotes"
)。您可以在定义userpath
变量时使用这种情况,或者在输入imwrite
时使用char(userpath)
。R2018 b似乎已经修复了这个bug,所以很可能是R2016 b(引入字符串时)到至少R2017 b(测试)之间的问题。
说明
这看起来有点像
imwrite
函数的意外行为,因为输入的解析方式有点奇怪。在
documentation
中,有3种主要的方法调用函数尤其是最后一个,
imwrite(___,fmt)
以fmt指定的格式写入图像,而不考虑文件名中的文件扩展名。您可以在前面任何语法中的输入参数后指定fmt
。你正在尝试第三种情况,即。
imwrite(A,filename,fmt)
,应该是有效的。不幸的是,错误使Matlab似乎正在检测输入imwrite(A,map,filename)
的第二种情况,因为错误消息报告map
无效,因为您的filename
不是有效的色彩Map表。通常情况下,接受越来越多的参数的Matlab函数会随着输入数量的增加而保持相同的输入顺序,这使得变量变得明确。这里的情况并非如此,因为3个输入的情况可以以两种不同的方式解释。
然而,从MATLAB Answers上得到的提示,错误消息是误导性的。
imwrite
不支持字符串输入。**事实上,如果你使用
edit imwrite
,你可以看到**输入解析依赖于ischar
来确定你想要使用的是两个3输入的情况中的哪一个。**其中varargin
是一个可变的输入数量,这是用来确定哪个是第一个 string(在字符串变量存在之前的一个令人困惑的变量名,一切都是char):因此,如果您使用char作为文件路径输入,那么将选择所需的3输入情况。