我试图找到矩阵的平均值。我创建了一个4800 x 5矩阵,现在想通过查找矩阵中每行的平均值将其变成4800 x 1矩阵。我知道这意味着我将每行中的所有元素加在一起并除以5.我正在考虑函数cvAvg,但到目前为止,我找不到它的使用示例。下面是我的代码,其中我将5个图像转换为4800 x 1的矩阵并将它们组合以创建4800 x 5的超级矩阵。下一步是找到超级矩阵的平均值。如果有人可以帮助我,我将非常感激。
答案 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(),你需要为每个平均元素定制一个自定义掩码,这似乎是一个非常简单的做同样事情的方法。