2017-08-28 78 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.