【问题标题】:MATLAB's function imfill() causes errorMATLAB 的函数 imfill() 导致错误
【发布时间】:2017-08-28 17:06:56
【问题描述】:

我有一个二进制图像(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 可能不存在,但确实存在。 关于如何解决的任何想法?

【问题讨论】:

  • 您最近是否升级了 MATLAB 或图像处理工具箱?
  • 并非如此。我刚刚安装了工具箱
  • which iptcheckconn 告诉你什么?
  • 以下:C:\Program Files\MATLAB\R2016a\toolbox\images\images\eml\iptcheckconn.m
  • 现在试试which iptcheckconn -all。我只得到一个 R2016b 的结果:C:\Program Files\MATLAB\R2016b\toolbox\images\iptutils\iptcheckconn.m

标签: image matlab image-processing


【解决方案1】:

如 cmets 所示,使用 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 使用正确的文件夹。或者,您也可以将该文件夹保留在路径上,但只需在路径列表中将其向下移动,以便它显示在第二个文件夹之后。来自文档:

当搜索路径上的多个文件夹中出现同名文件时,MATLAB 会使用在最靠近搜索路径顶部的文件夹中找到的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2015-01-06
    • 2016-11-29
    • 1970-01-01
    • 2020-03-14
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多