2011-07-27 25 views
-1

OpenCVのクラスcv::Matの定義では、演算子()=の定義が見つかりました。私はOpenCVがMATLABのような行列のためにオペレータ+-*/などをオーバーロードすると良いと思います。なぜOpenCVはオペレータ+-*/を行列にオーバーロードしないのですか?これらは予定通りですか?それともいいアイデアではないですか?OpenCVがcv :: Matクラスのオーバーロード演算子を無効にする理由

答えて

2

マトリックス操作はcxmat.hppで定義されています。私はそれがどのような利点を持っているのか、このようにするのか分かりませんが、彼らには理由があると思います。

+0

ありがとうございました。私はOpenCV 2.1で 'cxmat.hpp'を見つけたので、演算子' * -/+ 'の定義があります。しかし、私はまた、 'mat.hpp'の代わりに2.2からのcxmat.hppが存在しないことも発見しました。 –

+2

この回答は古くなりました。 – Antonio

3

ごめんなさいけど...

はい、OpenCVのは、これらすべての演算子をオーバーロード。それらを試してみてください!

int main(int argc, char** argv) 
{ 
    Mat m1 = Mat::zeros(2, 2, CV_32FC1); 
    Mat m2 = Mat::ones(2, 2, CV_32FC1); 
    m1.at<float>(0, 0) = 2.0f; 

    cout << (m2*2) << endl; 
    cout << m1*m2 << endl; 
    cout << m1+m2 << endl; 
    cout << m1-m2 << endl; 
} 
関連する問題