为什么OpenCV不会为类cv :: Mat重载operator * / +

时间:2011-07-27 07:06:01

标签: opencv

在OpenCV的类cv::Mat的定义中,我找到了运算符()=的定义。我认为如果OpenCV像MATLAB一样重载矩阵的运算符+-*/等,那就太好了。为什么OpenCV不会为矩阵重载运算符+-*/?这些是按计划进行的吗?或者,这不是一个好主意吗?

2 个答案:

答案 0 :(得分:4)

我很抱歉,但是......

是的,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;
}

答案 1 :(得分:2)

矩阵运算在cxmat.hpp中定义。我不知道它有什么优势,这样做,但我猜他们有他们的理由。