Merge pull request #3629 from nstiurca:matx-fix
This commit is contained in:
commit
f93be25cc8
@ -2644,6 +2644,10 @@ void _OutputArray::assign(const UMat& u) const
|
|||||||
{
|
{
|
||||||
u.copyTo(*(Mat*)obj); // TODO check u.getMat()
|
u.copyTo(*(Mat*)obj); // TODO check u.getMat()
|
||||||
}
|
}
|
||||||
|
else if (k == MATX)
|
||||||
|
{
|
||||||
|
u.copyTo(getMat()); // TODO check u.getMat()
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CV_Error(Error::StsNotImplemented, "");
|
CV_Error(Error::StsNotImplemented, "");
|
||||||
@ -2662,6 +2666,10 @@ void _OutputArray::assign(const Mat& m) const
|
|||||||
{
|
{
|
||||||
*(Mat*)obj = m;
|
*(Mat*)obj = m;
|
||||||
}
|
}
|
||||||
|
else if (k == MATX)
|
||||||
|
{
|
||||||
|
m.copyTo(getMat());
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CV_Error(Error::StsNotImplemented, "");
|
CV_Error(Error::StsNotImplemented, "");
|
||||||
|
@ -26,3 +26,106 @@ TEST(Core_SaturateCast, NegativeNotClipped)
|
|||||||
|
|
||||||
ASSERT_EQ(0xffffffff, val);
|
ASSERT_EQ(0xffffffff, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T, typename U>
|
||||||
|
static double maxAbsDiff(const T &t, const U &u)
|
||||||
|
{
|
||||||
|
Mat_<double> d;
|
||||||
|
absdiff(t, u, d);
|
||||||
|
double ret;
|
||||||
|
minMaxLoc(d, NULL, &ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Core_OutputArrayAssign, _Matxd_Matd)
|
||||||
|
{
|
||||||
|
Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
|
||||||
|
Matx23d actualx;
|
||||||
|
|
||||||
|
{
|
||||||
|
OutputArray oa(actualx);
|
||||||
|
oa.assign(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat actual = (Mat) actualx;
|
||||||
|
|
||||||
|
EXPECT_LE(maxAbsDiff(expected, actual), 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Core_OutputArrayAssign, _Matxd_Matf)
|
||||||
|
{
|
||||||
|
Mat expected = (Mat_<float>(2,3) << 1, 2, 3, .1, .2, .3);
|
||||||
|
Matx23d actualx;
|
||||||
|
|
||||||
|
{
|
||||||
|
OutputArray oa(actualx);
|
||||||
|
oa.assign(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat actual = (Mat) actualx;
|
||||||
|
|
||||||
|
EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Core_OutputArrayAssign, _Matxf_Matd)
|
||||||
|
{
|
||||||
|
Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
|
||||||
|
Matx23f actualx;
|
||||||
|
|
||||||
|
{
|
||||||
|
OutputArray oa(actualx);
|
||||||
|
oa.assign(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat actual = (Mat) actualx;
|
||||||
|
|
||||||
|
EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Core_OutputArrayAssign, _Matxd_UMatd)
|
||||||
|
{
|
||||||
|
Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
|
||||||
|
UMat uexpected = expected.getUMat(ACCESS_READ);
|
||||||
|
Matx23d actualx;
|
||||||
|
|
||||||
|
{
|
||||||
|
OutputArray oa(actualx);
|
||||||
|
oa.assign(uexpected);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat actual = (Mat) actualx;
|
||||||
|
|
||||||
|
EXPECT_LE(maxAbsDiff(expected, actual), 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Core_OutputArrayAssign, _Matxd_UMatf)
|
||||||
|
{
|
||||||
|
Mat expected = (Mat_<float>(2,3) << 1, 2, 3, .1, .2, .3);
|
||||||
|
UMat uexpected = expected.getUMat(ACCESS_READ);
|
||||||
|
Matx23d actualx;
|
||||||
|
|
||||||
|
{
|
||||||
|
OutputArray oa(actualx);
|
||||||
|
oa.assign(uexpected);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat actual = (Mat) actualx;
|
||||||
|
|
||||||
|
EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Core_OutputArrayAssign, _Matxf_UMatd)
|
||||||
|
{
|
||||||
|
Mat expected = (Mat_<double>(2,3) << 1, 2, 3, .1, .2, .3);
|
||||||
|
UMat uexpected = expected.getUMat(ACCESS_READ);
|
||||||
|
Matx23f actualx;
|
||||||
|
|
||||||
|
{
|
||||||
|
OutputArray oa(actualx);
|
||||||
|
oa.assign(uexpected);
|
||||||
|
}
|
||||||
|
|
||||||
|
Mat actual = (Mat) actualx;
|
||||||
|
|
||||||
|
EXPECT_LE(maxAbsDiff(expected, actual), FLT_EPSILON);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user