2

我已将一些代码从旧的 Opencv 转换为 c++ 版本,但在矩阵乘法时出现错误。

OpenCV Error: Sizes of input arguments do not match (The operation is neither 
'array op array' (where arrays have the same size and the same number of channels), 
nor 'array op scalar', nor 'scalar op array')

在网络上,这个错误似乎与拥有不同数量的频道有关——我的都是 1。

我确实发现不同的是一个“步骤” ——一个是 24,另一个是 32。

这一步在哪里?

我使用创建了两个输入矩阵

cv::Mat YYY(3, 4, CV_64FC1);   // step 32
cv::Mat XXX(3, 3, CV_64FC1);   // step 24

然而他们似乎有不同的步骤?

这可能是错误的罪魁祸首cv::multiply(XXX,YYY, DDD); 吗?

是否不可能在不同类型之间执行操作(如掩码)?

谢谢

4

1 回答 1

2

cv::multiply()执行两个矩阵的元素乘法。如错误所述,您的矩阵大小不同。

您可能正在寻找通过*运算符完成的矩阵乘法。因此

cv::Mat DDD = XXX * YYY;

将正确编译和运行。

作为记录,这与字段无关(直接)step,对于您的矩阵来说,它是列数 times sizeof(double),因为您的矩阵是 type CV_64FC1。如果矩阵不连续,事情会变得更加复杂,但对你来说并非如此。

于 2013-06-05T01:38:25.580 回答