我有一个二进制图像(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);
我检查了其他资源,他们建议文件imreconstruct
和iptcheckconn
可能不存在,但确实如此。
关于如何解决的任何想法?
答案 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,即使它们通常不应该添加到您的remove。 eml
文件夹没有出现在我的MATLAB路径上,我认为它通常不应该出现。我在安装过程中看到过这样的问题。
第一个文件夹中的iptcheckconn
版本遮挡了您真正想要在第二个文件夹中使用的版本。您需要Steve Tjoa's answer路径中的第一个文件夹,以便MATLAB使用正确的文件夹。或者,您也可以将该文件夹保留在路径上,但只需将其向下移动在路径列表中,以便在第二个文件夹后显示。来自文档:
当搜索路径上的多个文件夹中出现具有相同名称的文件时,MATLAB将使用距离搜索路径顶部最近的文件夹中的文件。