如何在一个数组中存储blob的Centroid值?

时间:2014-01-14 18:55:24

标签: arrays matlab image-processing

我的照片中有一定数量的各种形状的斑点。我想将这些质心值存储在一个数组中以备将来使用。所以我尝试了以下代码,但它没有用。那么有人可以帮助我吗?

样品:

for i = 1:length(STATS)
       centroid = STATS(i).Centroid;
       array = zeros(length(STATS));
       array(i) = centroid;
end

我想将质心数据存储在一个数组中,如下所示

array=

145 145
14  235 
145 544
14  69
74  55

3 个答案:

答案 0 :(得分:1)

尝试以下方法:

for i = 1:length(STATS)
   array{i} = STATS(i).Centroid;
end

您可以使用以下方法打印整个阵列:

array{:}

您可以阅读有关单元格数组here的更多信息。此外,在旧代码中,您尝试将数组(Centroid)分配给数组元素(array(i))。

答案 1 :(得分:1)

怎么样:

array=cell2mat({STATS.Centroid});

答案 2 :(得分:0)

假设

STATS(1).Centroid = [145 145];
STATS(2).Centroid = [14 235];   % Etc...

尝试:

array = reshape([STATS.Centroid],2,size(STATS,2))' 
array =

   145   145
    14   235
   145   544
    14    69
    74    55

这是如何运作的:

[STATS.Centroid][STATS(1).Centroid, STATS(2).Centroid, .. STATS(n).Centroid]的简短版本。这将为您提供值作为向量。然后使用reshape使其达到您想要的大小。