2012-04-04 224 views
0

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

+0

究竟是什么阻止你将总和除以5?似乎是一个很快的捷径... – 2012-04-04 15:57:49

+0

你的意思是将5个单独的行元素和神圣加起来,而不是使用cvAvg? – 2012-04-04 16:03:23

回答

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()你需要为每个平均元素,这似乎像一个真正的周围的方式自定义掩码做同样的事情。

+0

非常感谢!我了解你对使用cvAvg的关注。你的代码工作完美。再次感谢,是的,你明白我想要做的事情。 – 2012-04-04 21:04:46