diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 364e6f511..89d2bbfd4 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -1352,7 +1352,7 @@ void _OutputArray::create(int dims, const int* size, int type, int i, bool allow if(CV_MAT_CN(type) == m.channels() && ((1 << CV_MAT_TYPE(flags)) & fixedDepthMask) != 0 ) type = m.type(); else - CV_Assert(!fixedType() || (CV_MAT_CN(type) == m.channels() && ((1 << CV_MAT_TYPE(flags)) & fixedDepthMask) != 0)); + CV_Assert(CV_MAT_TYPE(type) == m.type()); } if(fixedSize()) { diff --git a/modules/core/test/test_arithm.cpp b/modules/core/test/test_arithm.cpp index bb61405f6..b20d28aed 100644 --- a/modules/core/test/test_arithm.cpp +++ b/modules/core/test/test_arithm.cpp @@ -1504,6 +1504,14 @@ protected: d.convertTo(d1, depth); CV_Assert( norm(c, d1, CV_C) <= DBL_EPSILON ); } + + Mat_ tmpSrc(100,100); + tmpSrc = 124; + Mat_ tmpMask(100,100); + tmpMask = 255; + Mat_ tmpDst(100,100); + tmpDst = 2; + tmpSrc.copyTo(tmpDst,tmpMask); } catch(...) {