2011-07-27 61 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; 
}