cv :: MatExpr的目的是什么?

时间:2016-10-10 18:31:49

标签: opencv

OpenCV算术运算产生cv::MatExpr,例如:

MatExpr operator+ (const Mat & a, const Mat &b);

我看到它用于在计算表达式之前表示它。这样做的目的是什么?

1 个答案:

答案 0 :(得分:7)

让我们说你有这样的表达:
Mat A = 3 + B * 5;
其中B也是Mat。如果运营商+*在哪里返回MatB * 5会创建一个临时Mat,那么+运营商就会拥有创建另一个Mat。相反,B * 5会返回MatExpr,而Mat实际上并未创建+,它只会记住"它需要进行的操作。然后,MatExpr运算符会创建另一个=,只有Mat运算符会创建Mat,从而避免使用临时u'1:19 AM Eastern, Tuesday, May 16, 2017'
https://en.wikipedia.org/wiki/Lazy_evaluation