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')

Web では、このエラーは異なる数のチャンネルを持つことに関連しているようです - 私のチャンネルはすべて 1 です。

私が違うと思ったのは「ステップ」です.1つは24、もう1つは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()2 つの行列の要素ごとの乗算を実行します。エラーが示すように、マトリックスは同じサイズではありません。

*演算子を介して実行される行列の乗算を探している場合があります。したがって

cv::Mat DDD = XXX * YYY;

正しくコンパイルおよび実行されます。

レコードの場合、これはフィールドとは (直接) 関係ありませんstep。行列の場合、列の数は です。これは、sizeof(double)行列の型が であるためCV_64FC1です。行列が連続でない場合、事態はさらに複雑になりますが、それは当てはまりません。

于 2013-06-05T01:38:25.580 に答える