首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

求openCV求点乘在求和的较快的算法,该如何解决

2012-04-18 
求openCV求点乘在求和的较快的算法即CvMat * c1, CvMat * c2数组维数相同对应位置做乘法 然后得出求和C/C+

求openCV求点乘在求和的较快的算法
即CvMat * c1, CvMat * c2
数组维数相同
对应位置做乘法 然后得出求和 

C/C++ code
inline double SumScalarMultip(CvMat * s1, CvMat * s2){    double sum = 0.0;    for (int i = 0; i < s1->rows; i++)    {        for (int j = 0; j < s1->cols; j++)        {            sum += cvmGet(s1, i, j) * cvmGet(s2, i, j);        }    }    return sum;}


我是这样写的但是速度很慢,比matlab下还慢
opencv有没有什么自带的函数
  


[解决办法]
不应该很慢的。
可以这样,对s1调用两次cvReduce(),先cvReduce(s1, CvArr* dst1, 0, CV_REDUCE_SUM);
再调用一次cvReduce(dst1, CvArr* dst2, 1,CV_REDUCE_SUM);
dst2是一个一行一列的CvMat;对S2运用两次同样的cvReduce()函数,这样总共调用四次。
或者用cvAddWeighted()函数,将S1、S2先合并成一个,再调用两次cvReduce().

热点排行