OpenCV算术运算产生一个cv::MatExpr,例如:
MatExproperator+(const Mat & a, const Mat &b);
我看到这用于在计算表达式之前表示它.这样做的目的是什么?
假设你有这样的表达:
Mat A = 3 + B * 5;
其中B也是一个Mat.如果运算符+和*返回的位置Mat,B * 5将创建一个临时的Mat,然后+运算符将创建另一个Mat.相反,B * 5返回一个MatExpr实际上没有创建的东西Mat,它只是"记住"它需要执行的操作.然后,+操作员创建另一个MatExpr,只有=操作员创建一个Mat,从而避免临时Mat.
请参阅https://en.wikipedia.org/wiki/Lazy_evaluation
| 归档时间: |
|
| 查看次数: |
1563 次 |
| 最近记录: |