bool haveMask = !_mask.empty();
bool reallocate = false;
- if( kind1 == kind2 && src1.dims <= 2 && src2.dims <= 2 &&
+ if( (kind1 == kind2 || src1.channels() == 1) && src1.dims <= 2 && src2.dims <= 2 &&
src1.size() == src2.size() && src1.type() == src2.type() &&
!haveMask && ((!_dst.fixedType() && (dtype < 0 || CV_MAT_DEPTH(dtype) == src1.depth())) ||
(_dst.fixedType() && _dst.type() == _src1.type())) )
bool haveScalar = false, swapped12 = false;
- if( (kind1 == _InputArray::MATX) + (kind2 == _InputArray::MATX) == 1 ||
- src1.size != src2.size || src1.channels() != src2.channels() )
+ if( src1.size != src2.size || src1.channels() != src2.channels() )
{
if( checkScalar(src1, src2.type(), kind1, kind2) )
{
minval == -7 && maxval == 12))
throw test_excep();
- Matx33f b(1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f), c;
+ Matx33f b(1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f);
+ Mat c;
add(Mat::zeros(3, 3, CV_32F), b, c);
CV_Assert( norm(b, c, CV_C) == 0 );
+
+ add(Mat::zeros(3, 3, CV_64F), b, c, noArray(), c.type());
+ CV_Assert( norm(b, c, CV_C) == 0 );
+
+ add(Mat::zeros(6, 1, CV_64F), 1, c, noArray(), c.type());
+ CV_Assert( norm(Matx61f(1.f, 1.f, 1.f, 1.f, 1.f, 1.f), c, CV_C) == 0 );
}
catch(const test_excep&)
{