MATLAB的函数imfill()会导致错误

时间:2017-08-28 17:06:57

标签: image matlab image-processing

我有一个二进制图像(720x1280逻辑),其中有一些漏洞,所以我使用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 个答案:

答案 0 :(得分: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,即使它们通常不应该添加到您的removeeml文件夹没有出现在我的MATLAB路径上,我认为它通常不应该出现。我在安装过程中看到过这样的问题。

第一个文件夹中的iptcheckconn版本遮挡了您真正想要在第二个文件夹中使用的版本。您需要Steve Tjoa's answer路径中的第一个文件夹,以便MATLAB使用正确的文件夹。或者,您也可以将该文件夹保留在路径上,但只需将其向下移动在路径列表中,以便在第二个文件夹后显示。来自文档:

  

当搜索路径上的多个文件夹中出现具有相同名称的文件时,MATLAB将使用距离搜索路径顶部最近的文件夹中的文件。