OpenCV提供了一個通用矩陣乘法的函式,cvGEMM(),代表的是GEneralized Matrix Multiplication,cvGEMM()可以處理線性代數方面許多的乘法運算,cvmMul()矩陣乘法這個函式就是從這裡來的,cvmMul()在"cvcompat.h"及"cxcore.h"這兩個函式庫被定義為
#define cvmMul(src1,src2,dst) cvMatMulAdd(src1,src2,0,dst)
#define cvMatMul(src1,src2,dst) cvMatMulAdd((src1),(src2),NULL,(dst))
#define cvMatMulAdd(src1,src2,src3,dst) cvGEMM((src1),(src2),1.,(src3),1.,(dst),0)
先簡單的介紹cvmMul()跟cvMatMul()的用法
cvmMul()及cvMatMul()的實作
#include
#include
float array1[]={3,1,2,0,1,5};
float array2[]={4,3,1,1,6,0};
void PrintMatrix(CvMat *Matrix,int Rows,int Cols,int Channels);
int main()
{
CvMat *A=cvCreateMat(2,3,CV_32FC1);
CvMat *B=cvCreateMat(3,2,CV_32FC1);
CvMat *ResultMatrix=cvCreateMat(2,2,CV_32FC1);
cvSetData(A,array1,A->step);
cvSetData(B,array2,B->step);
printf("cvmMul():\n");
cvmMul(A,B,ResultMatrix);
PrintMatrix(ResultMatrix,2,2,1);
printf("\ncvMatMul():\n");
cvMatMul(A,B,ResultMatrix);
PrintMatrix(ResultMatrix,2,2,1);
system("pause");
}
void PrintMatrix(CvMat *Matrix,int Rows,int Cols,int Channels)
{
for(int i=0;i
{
#define cvmMul(src1,src2,dst) cvMatMulAdd(src1,src2,0,dst)
#define cvMatMul(src1,src2,dst) cvMatMulAdd((src1),(src2),NULL,(dst))
#define cvMatMulAdd(src1,src2,src3,dst) cvGEMM((src1),(src2),1.,(src3),1.,(dst),0)
先簡單的介紹cvmMul()跟cvMatMul()的用法
cvmMul()及cvMatMul()的實作
#include
#include
float array1[]={3,1,2,0,1,5};
float array2[]={4,3,1,1,6,0};
void PrintMatrix(CvMat *Matrix,int Rows,int Cols,int Channels);
int main()
{
}
void PrintMatrix(CvMat *Matrix,int Rows,int Cols,int Channels)
{
除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自openCV的矩阵乘法