矩阵乘法

Mar*_*rio 7 c c++ opencv

我有一个可能适合初学者的问题.

我想在c ++中将20x2矩阵乘以2x2矩阵.

我用openCV尝试了但是我得到了一个错误

cvarrToMat中的错误参数(未知数组类型)


这是我在openCV中使用的代码,以便检查问题,如果它是我的代码或openCV中的问题,但它仍然无法正常工作,我可以编译出错,但是当我测试代码时,我得到了问题"cvarrToMat中的错误参数(未知数组类型)"

#include <stdio.h>
#include <stdlib.h>
//#include "/usr/include/opencv/cv.h"
#include <cv.h>
#include <cvaux.h>
#include <highgui.h>
#include <math.h>
#include <iostream>

  int main()
{


double a[] = {1, 2, 3, 4};
CvMat Ma;
cvInitMatHeader(&Ma, 2, 2, CV_32FC1, a);


double b[] ={0, -1, 1, 0};

CvMat Mb;
cvInitMatHeader(&Mb, 2, 2, CV_32FC1, b);

CvMat Mc;
CvMat Mc1;
cvMatMul(&Ma, &Mb, &Mc);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

car*_*eri 5

将您的代码与OpenCV文档中示例进行比较,似乎您忘记初始化输出矩阵Mc:

double a[] = { 1, 2, 3, 4,
               5, 6, 7, 8,
               9, 10, 11, 12 };

double b[] = { 1, 5, 9,
               2, 6, 10,
               3, 7, 11,
               4, 8, 12 };

double c[9];
CvMat Ma, Mb, Mc ;

cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a);
cvInitMatHeader(&Mb, 4, 3, CV_64FC1, b);
cvInitMatHeader(&Mc, 3, 3, CV_64FC1, c);

cvMatMulAdd(&Ma, &Mb, 0, &Mc);
// the c array now contains the product of a (3x4) and b (4x3)
Run Code Online (Sandbox Code Playgroud)

根据文档,cvMatMul(&Ma, &Mb, &Mc)是一样的cvMatMulAdd(&Ma, &Mb, 0, &Mc).


Vir*_*eal -3

也许您应该发布您正在调用的函数的原型,以及矩阵和调用的声明。我认为并不是每个人都熟悉 openCV。