找到矩阵的平均值

时间:2012-04-04 15:45:56

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

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

1 个答案:

答案 0 :(得分: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(),你需要为每个平均元素定制一个自定义掩码,这似乎是一个非常简单的做同样事情的方法。