1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 08:13:04 +04:00

core(MatExpr) fetch result before InputArray wrap

- avoid multiple expression evaluations
- avoid issues with reduced support of InputArray::EXPR
This commit is contained in:
Alexander Alekhin
2020-02-21 20:30:18 +00:00
parent 0812207db7
commit 936428cb3b
3 changed files with 38 additions and 3 deletions
@@ -3580,6 +3580,8 @@ public:
Mat cross(const Mat& m) const;
double dot(const Mat& m) const;
void swap(MatExpr& b);
const MatOp* op;
int flags;
@@ -150,9 +150,6 @@ _InputArray::_InputArray(const Mat_<_Tp>& m)
inline _InputArray::_InputArray(const double& val)
{ init(FIXED_TYPE + FIXED_SIZE + MATX + CV_64F + ACCESS_READ, &val, Size(1,1)); }
inline _InputArray::_InputArray(const MatExpr& expr)
{ init(FIXED_TYPE + FIXED_SIZE + EXPR + ACCESS_READ, &expr); }
inline _InputArray::_InputArray(const cuda::GpuMat& d_mat)
{ init(CUDA_GPU_MAT + ACCESS_READ, &d_mat); }
@@ -4054,6 +4051,9 @@ inline void UMatData::markDeviceCopyObsolete(bool flag)
//! @endcond
static inline
void swap(MatExpr& a, MatExpr& b) { a.swap(b); }
} //cv
#ifdef _MSC_VER