读书人

求openCV求点乘在求和的较快的算法,该

发布时间: 2012-04-18 15:01:59 作者: rapoo

求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().

读书人网 >VC/MFC

热点推荐