【问题标题】:Finding the average of a matrix求矩阵的平均值
【发布时间】:2012-04-04 15:45:55
【问题描述】:

我试图找到一个矩阵的平均值。我创建了一个 4800 x 5 矩阵,现在想通过查找矩阵中每一行的平均值将其变成一个 4800 x 1 矩阵。我知道这意味着我将每行中的所有元素相加并除以 5。我正在考虑函数 cvAvg 但到目前为止,我找不到它的使用示例。下面是我的代码,其中我将 5 个图像转换为 4800 x 1 的矩阵并将它们组合起来以创建 4800 x 5 的超矩阵。下一步是找到超矩阵的平均值。请,如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 究竟是什么阻止了您将总和除以 5?走捷径似乎还有很长的路要走……
  • 你的意思是把行元素加起来,然后分别按 5 计算,而不是使用 cvAvg?

标签: c++ image-processing opencv matrix average


【解决方案1】:

除非我不明白你不能做的事情:

CvMat* avgMat = cvCreateMat(4800, 1, CV_8UC1);

for(int i = 0; i < 4800; ++i)
{
    CV_MAT_ELEM( *avgMat , float, i, 0 ) = ( CV_MAT_ELEM( *col0, float, i, 0 ) + 
                                             CV_MAT_ELEM( *col1, float, i, 0 ) + 
                                             CV_MAT_ELEM( *col2, float, i, 0 ) + 
                                             CV_MAT_ELEM( *col3, float, i, 0 ) +
                                             CV_MAT_ELEM( *col4, float, i, 0 )
                                            ) / 5;
}

如果您使用 cvAvg(),则需要为每个平均元素设置一个自定义掩码,这似乎是做同样事情的一种非常全面的方式。

【讨论】:

  • 非常感谢!我理解您对使用 cvAvg 的担忧。您的一段代码运行良好。再次感谢,是的,你确实明白我想要做什么。
猜你喜欢
  • 2013-09-29
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2013-10-15
  • 2016-08-16
  • 2022-01-05
  • 2018-09-23
相关资源
最近更新 更多