2011-07-27 58 views
-1

在OpenCV的類cv::Mat的定義中,我找到了運算符()=的定義。我認爲OpenCV如MATLAB那樣爲矩陣重載運算符+-*/等是很好的。爲什麼OpenCV不會爲矩陣重載運算符+-*/?這些在計劃中嗎?或者,這不是一個好主意嗎?爲什麼OpenCV沒有爲cv類重載運算符*/+ Mat

回答

2

矩陣操作在cxmat.hpp中定義。我不知道它有什麼優勢,這樣做,但我想他們有他們的理由。

+0

謝謝。我在OpenCV 2.1中找到了'cxmat.hpp',它定義了運算符'* -/+'。但是我也發現沒有來自2.2的cxmat.hpp,而不是具有這些定義的'mat.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; 
}