2017-08-28 163 views
2

我有一个其中有一些漏洞的二进制图像(720x1280逻辑的),所以我用imfill填满它,但是这个动作失败了,我得到了以下错误:MATLAB的功能imfill()导致错误

Undefined function or variable 'eml_assert_all_constant'. 
Error in iptcheckconn (line 8) 
eml_assert_all_constant(varargin{:}); 
Error in imreconstruct>parseInputs (line 136) 
    iptcheckconn(varargin{3},mfilename,'CONN',3); 
Error in imreconstruct (line 74) 
[marker,mask,conn] = parseInputs(varargin{:}); 
Error in imfill (line 141) 
    I2 = imreconstruct(marker, mask, conn); 

我检查了其他资源,他们建议文件imreconstructiptcheckconn可能不存在,但他们这样做。 有关如何解决的任何想法?

+1

您最近升级MATLAB或图像处理工具箱? – gnovice

+0

不是。我刚刚安装了工具箱 – guyts

+0

'which iptcheckconn'显示了什么? – gnovice

回答

2

如评论所示,使用which将显示被调用的文件iptcheckconn的位置。该-all选项显示,有两个版本,显示出在R2016a这些文件夹中您:

C:\Program Files\MATLAB\R2016a\toolbox\images\images\eml 
C:\Program Files\MATLAB\R2016a\toolbox\images\iptutils 

对于我来说,在R2016b,我只看到一个显示在iptutils文件夹了。您的问题似乎是,您的Image Processing Toolbox中有一些子文件夹已添加到MATLAB path中,即使它们通常不是这样。 eml文件夹没有出现在我的MATLAB路径中,我认为它通常不应该。我在安装过程中发现过类似的问题。

第一个文件夹中的iptcheckconn版本隐藏了您真正想要在第二个文件夹中使用的版本。您需要remove路径中的第一个文件夹,以便MATLAB使用正确的文件夹。或者,您也可以在路径上保留该文件夹,但仅在将其在路径列表上向下移动,以便在之后显示第二个文件夹。从文档:

When files with the same name appear in multiple folders on the search path, MATLAB uses the one found in the folder nearest to the top of the search path.