0

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

4

1 回答 1

0

除非我不理解某些事情,否则您不能这样做:

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() ,则需要为每个平均元素设置一个自定义掩码,这似乎是做同样事情的一种非常全面的方式。

于 2012-04-04T16:37:11.753 回答