【问题标题】:How to store the Centroid values of blobs in one Array?如何将斑点的质心值存储在一个数组中?
【发布时间】:2014-01-14 18:55:23
【问题描述】:

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

示例:

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

【问题讨论】:

  • 什么是STATS(i).Centroid?标量还是矩阵?是STATS(1).Centroid = [145 145]?如果不是,那是什么?
  • STATS(1).Centroid=[145 145];

标签: arrays matlab image-processing


【解决方案1】:

尝试以下方法:

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

您可以使用以下命令打印整个数组:

array{:}

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

【讨论】:

    【解决方案2】:

    怎么样:

    array=cell2mat({STATS.Centroid});
    

    【讨论】:

      【解决方案3】:

      假设

      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 将其制成您想要的大小。

      【讨论】:

      • 错误使用重塑要重塑元素的数量不能改变。连接错误(第 61 行)array=reshape([STATS.Centroid],2,size(STATS,2));
      • @saravana:尝试用[] 替换输入参数之一。也就是说,要么使用array=reshape([STATS.Centroid],2,[]);,要么使用array=reshape([STATS.Centroid],[],size(STATS,2));
      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 2014-07-26
      • 2023-03-28
      • 2021-01-29
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多