MATLAB错误:没有为类'struct'的值定义函数'subsindex'

时间:2012-04-08 08:00:46

标签: matlab

我尝试了这些命令:

im=imread('untitled_test1.jpg');
im1=rgb2gray(im);
im1=medfilt2(im1,[15 15]);
BW = edge(im1,'sobel'); 

msk=[0 0 0 0 0;
 0 1 1 1 0;
 0 1 1 1 0;
 0 1 1 1 0;
 0 0 0 0 0;];
B=conv2(double(BW),double(msk));

Ibw = im2bw(B);
CC = bwconncomp(Ibw); %Ibw is my binary image
stats = regionprops(CC,'pixellist');

% pass all over the stats
for i=1:length(stats),
size = length(stats(i).PixelList);
% check only the relevant stats (the black ellipses)
if size >150 && size < 600 
    % fill the black pixel by white    

    x = round(mean(stats(i).PixelList(:,2)));
    y = round(mean(stats(i).PixelList(:,1)));
    Ibw = imfill(Ibw, [x, y]);

else
    Ibw([CC.PixelIdxList{i}]) = false;
end;
end;

(这里我有另一个命令行,但我想问题不在于它们。)

labeledImage = bwlabel(binaryImage, 8);     % Label each blob so we can make measurements of it
blobMeasurements = regionprops(labeledImage, Ibw, 'all');   
numberOfBlobs = size(blobMeasurements, 1); 

我收到此错误消息:

??? Error using ==> subsindex
Function 'subsindex' is not defined for values of class 'struct'.

Error in ==> test2 at 129
numberOfBlobs = size(blobMeasurements, 1);

出了什么问题?

2 个答案:

答案 0 :(得分:17)

您收到该错误是因为您创建了一个名为“size”的变量,它隐藏了内置的函数 SIZE。而不是调用函数来计算numberOfBlobs,而是使用结构blobMeasurements作为索引来尝试索引变量<(>)工作,如错误信息所示。)

通常,您不应该为变量或函数指定已存在函数的名称(除非know what you're doing)。只需将代码中变量的名称更改为“size”以外的其他名称,发出命令clear size以清除工作区中的旧大小变量,然后重新运行代码。

答案 1 :(得分:1)

您的错误消息告诉您错误位于numberOfBlobs = size(blobMeasurements, 1);subsindex最有可能在size(..., 1)中使用blobMeasurements来访问这些元素。

我假设length是结构(或单个结构)的数组,对于该结构,该操作未完全定义。

为什么不像以前一样使用{{1}}命令?这在你的代码中提前了一点。