Ответ 1
Вы говорите, что матрицы имеют одинаковые размеры, и все же вы пытаетесь выполнить на них матричное умножение. Умножение на одних и тех же размерных матрицах было бы возможно, если бы его квадратная матрица. В вашем случае вы получаете ошибку утверждения, потому что размеры не квадратные. Вы должны быть осторожны при умножении матриц, так как есть два возможных значения умножения.
Матричное умножение - это то, где две матрицы умножаются напрямую. Эта операция умножает матрицу A размера [a x b] на матрицу B размера [b x c] для создания матрицы C размера [a x c]. В OpenCV это достигается с помощью простого оператора *
:
C = A * B
Элементарное умножение - это где каждый пиксель в выходной матрице формируется путем умножения этого пикселя в матрице A по соответствующей записи в матрице B. Входные матрицы должны быть одного размера, а выход будет иметь одинаковый размер. Это достигается с помощью функции mul()
:
output = A.mul(B);