Я умножаю две матрицы с помощью OpenCV, A в NxM и B в MxP.
Согласно документации:
Все массивы должны иметь одинаковый тип и одинаковый размер (или размер ROI). Для типов с ограниченным диапазоном эта операция является насыщающей.
Однако согласно теории умножения матриц:
Предположим, что нужно перемножить две матрицы (обобщение на любое число обсуждается ниже). Если A представляет собой матрицу размера n × m, а B представляет собой матрицу размера m × p, результатом будет AB их умножения — матрица размера n × p, определенная только в том случае, если количество столбцов m в A равно количеству строк m в Б.
этот код не должен работать?
- (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 && src1.channels() == dst.channels()) в cvMul, файл /Users/Aziz/Documents/Projects/opencv_sources/trunk/modules/core/src /arithm.cpp, строка 2728
kMatrixType — CV_32F, A — 6x234, B — 234x5, а результат — 6x5...
Я делаю что-то неправильно? Или это ограничение OpenCV на умножение матриц?