我将两个矩阵与OpenCV相乘,A在NxM中,A是MxP。
所有阵列必须具有相同的类型和相同的大小(或ROI 尺寸)。对于范围有限的类型,此操作是饱和的。
但是,theory of matrix multiplication:
假设两个矩阵相乘(对任何矩阵的推广) 号码将在下面讨论)。如果A是n×m矩阵而B是m×p 矩阵,结果将是它们的乘法的AB是定义的n×p矩阵 只有当A中的列数m等于行数m时 在B。
这个代码不应该起作用吗?
- (CvMat *) multMatrix:(CvMat *)AMatrix BMatrix:(CvMat *)BMatrix
{
CvMat *result = cvCreateMat(AMatrix->rows, BMatrix->cols, kMatrixType);
cvMul(AMatrix, BMatrix, result, 1.0);
return result;
}
我得到以下异常:
OpenCV错误:断言失败(src1.size == dst.size&& cvMul文件中的src1.channels()== dst.channels()) /Users/Aziz/Documents/Projects/opencv_sources/trunk/modules/core/src/arithm.cpp, 第2728行
kMatrixType是CV_32F,A是6x234,B是234x5,结果是6x5 ......
我做错了吗?或者这是对矩阵乘法的OpenCV限制吗?
答案 0 :(得分:3)