diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp index 6c88a78683..3a02d45d89 100644 --- a/modules/core/include/opencv2/core/core.hpp +++ b/modules/core/include/opencv2/core/core.hpp @@ -1276,6 +1276,7 @@ public: template _InputArray(const vector >& vec); _InputArray(const vector& vec); template _InputArray(const Matx<_Tp, m, n>& matx); + _InputArray(const Scalar& s); _InputArray(const double& val); virtual Mat getMat(int i=-1) const; virtual void getMatVector(vector& mv) const; diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index 6638d6c78b..acd290ec47 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -1103,18 +1103,21 @@ process( const Mat_& m1, const Mat_& m2, Mat_& m3, Op op ) /////////////////////////////// Input/Output Arrays ///////////////////////////////// -template _InputArray::_InputArray(const vector<_Tp>& vec) +template inline _InputArray::_InputArray(const vector<_Tp>& vec) : flags(STD_VECTOR + DataType<_Tp>::type), obj((void*)&vec) {} -template _InputArray::_InputArray(const vector >& vec) +template inline _InputArray::_InputArray(const vector >& vec) : flags(STD_VECTOR_VECTOR + DataType<_Tp>::type), obj((void*)&vec) {} -template _InputArray::_InputArray(const Matx<_Tp, m, n>& mtx) +template inline _InputArray::_InputArray(const Matx<_Tp, m, n>& mtx) : flags(MATX + DataType<_Tp>::type), obj((void*)&mtx), sz(n, m) {} -template _OutputArray::_OutputArray(vector<_Tp>& vec) : _InputArray(vec) {} -template _OutputArray::_OutputArray(vector >& vec) : _InputArray(vec) {} -template _OutputArray::_OutputArray(Matx<_Tp, m, n>& mtx) : _InputArray(mtx) {} +inline _InputArray::_InputArray(const Scalar& s) + : flags(MATX + CV_64F), obj((void*)&s), sz(1, 4) {} + +template inline _OutputArray::_OutputArray(vector<_Tp>& vec) : _InputArray(vec) {} +template inline _OutputArray::_OutputArray(vector >& vec) : _InputArray(vec) {} +template inline _OutputArray::_OutputArray(Matx<_Tp, m, n>& mtx) : _InputArray(mtx) {} //////////////////////////////////// Matrix Expressions /////////////////////////////////////////