opencv-cvGEMM
官方文档
文档说的很清楚,进行矩阵操作的一个函数,cpp接口为gemm。其中tABC参数为控制矩阵A、B、C是否转置的标记,读过源码后发现其通过一位数据来控制是否转置,二进制111表示三个矩阵均为转置矩阵。
小例子
double vec_d[3] = { 3.,4.,5. };
CvMat A = cvMat(3, 1, CV_64FC1, vec_d);
CvMat B = cvMat(3, 1, CV_64FC1, vec_d);
CvMat C = cvMat(1, 1, CV_64FC1, vec_d);
double result_ptr[9];
CvMat result_1 = cvMat(1, 1, CV_64FC1, result_ptr);
CvMat result_2 = cvMat(3, 3, CV_64FC1, result_ptr);
cvGEMM(&A, &B, 1, 0, 0, &result_1, 1);
cvGEMM(&A, &B, 1, 0, 0, &result_2, 2);
cvGEMM(&A, &B, 1, &C, 1, &result_1, 1);
cvGEMM(&A, &B, 1, 0, 0, &result_1, 1);表达式如下
[ 3 4 5 ] [ 3 4 5 ] = 50 \begin{bmatrix}3&4&5\\\end{bmatrix}\begin{bmatrix}3\\4\\5\\\end{bmatrix}=50 [345]⎣⎡