Я, вероятно, невероятно глуп, но у меня возникли проблемы с выполнением некоторого базового умножения Mat с использованием OpenCV для Android.
У меня есть два коврика одного типа,CV_64F
mat1
имеет размер:3 строки, 3 столбца
mat2
имеет размер:3 строки, 1 столбец
Я хочу умножить их, чтобы получить изделие mat3
размера 3 ряда, 1 столб.
Я пытался использовать :
Mat mat3 = new Mat(3, 1, CvType.CV_64F);
Core.multiply(mat1, mat2, mat3);
, но получаю сообщение об ошибке:
CvException [org.opencv.core.CvException:/home/andreyk/OpenCV2/trunk/opencv_2.3.1.b2/modules/core/src/arithm.cpp:1253:error:(-209)Операция не является ни 'array op array' (, где массивы имеют одинаковый размер и одинаковое количество каналов), ни 'операция массива скаляр», ни «скалярный массив операций» в функции void cv::arithm_op(const cv::_InputArray&, const cv::_InputArray&, const cv::_OutputArray&, const cv::_InputArray&, int, void(*)(const uchar , size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*)
Что я делаю не так?
Заранее благодарим за любую помощь.
РЕДАКТИРОВАТЬ:
Если это поможет, матрица 3x3 mat2
является результатом Imgproc.getPerspectiveTransform
, а остальная часть кода выглядит следующим образом:
Mat mat1 = new Mat(3, 1, CvType.CV_64F);
mat1.put(0, 0, 2.0);
mat1.put(1, 0, 0.5);
mat1.put(2, 0, 1.0);
Mat mat3 = new Mat(3, 1, CvType.CV_64F);
Core.multiply(mat2, mat1, mat3);