mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.7 KiB
131 lines
2.7 KiB
#include "test_precomp.hpp" |
|
|
|
using namespace cv; |
|
using namespace std; |
|
|
|
TEST(Core_OutputArrayCreate, _1997) |
|
{ |
|
struct local { |
|
static void create(OutputArray arr, Size submatSize, int type) |
|
{ |
|
int sizes[] = {submatSize.width, submatSize.height}; |
|
arr.create(sizeof(sizes)/sizeof(sizes[0]), sizes, type); |
|
} |
|
}; |
|
|
|
Mat mat(Size(512, 512), CV_8U); |
|
Size submatSize = Size(256, 256); |
|
|
|
ASSERT_NO_THROW(local::create( mat(Rect(Point(), submatSize)), submatSize, mat.type() )); |
|
} |
|
|
|
TEST(Core_SaturateCast, NegativeNotClipped) |
|
{ |
|
double d = -1.0; |
|
unsigned int val = cv::saturate_cast<unsigned int>(d); |
|
|
|
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); |
|
}
|
|
|