15

私はかなり些細なことを達成しようとしてきましたが、Matlabでは些細なことです。

私は単純に次のようなことを達成したい:

cv::Mat sample = [4 5 6; 4 2 5; 1 4 2];
sample = 5*sample;

その後、サンプルは次のようになります。

[20 24 30; 20 10 25; 5 20 10]

scaleAddMul、およびどちらもスカラー乗数を許可せMultiplyず、同じ「サイズとタイプ」の行列を必要としました。このシナリオでは、Matrix of Ones を作成してから scale パラメータを使用できますが、それは非常に無関係に思えます

直接的な単純な方法はどれも素晴らしいでしょう!

4

5 に答える 5

22

実際、OpenCV は、オーバーロードされたスカラー値による乗算をサポートしていoperator*ます。ただし、マトリックスを正しく初期化する必要がある場合があります。

float data[] = {1 ,2, 3,
                4, 5, 6,
                7, 8, 9};
cv::Mat m(3, 3, CV_32FC1, data);
m = 3*m;  // This works just fine

主に数学演算に関心がある場合は、次の操作cv::Matxが少し簡単です。

cv::Matx33f mx(1,2,3,
               4,5,6,
               7,8,9);
mx *= 4;  // This works too
于 2013-07-27T04:04:33.293 に答える