mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Merge pull request #9457 from alalek:type_traits_issue_7599
This commit is contained in:
+235
-11
@@ -1146,15 +1146,19 @@ TEST(Core_InputOutput, FileStorage_DMatch_vector)
|
||||
EXPECT_STREQ(fs_result.c_str(),
|
||||
"%YAML:1.0\n"
|
||||
"---\n"
|
||||
"dv: [ 1, 2, 3, -1.5000000000000000e+000, 2, 3, 4,\n"
|
||||
" 1.5000000000000000e+000, 3, 2, 1, 5.0000000000000000e-001 ]\n"
|
||||
"dv:\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+000 ]\n"
|
||||
" - [ 2, 3, 4, 1.5000000000000000e+000 ]\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-001 ]\n"
|
||||
);
|
||||
#else
|
||||
EXPECT_STREQ(fs_result.c_str(),
|
||||
"%YAML:1.0\n"
|
||||
"---\n"
|
||||
"dv: [ 1, 2, 3, -1.5000000000000000e+00, 2, 3, 4, 1.5000000000000000e+00,\n"
|
||||
" 3, 2, 1, 5.0000000000000000e-01 ]\n"
|
||||
"dv:\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n"
|
||||
" - [ 2, 3, 4, 1.5000000000000000e+00 ]\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n"
|
||||
);
|
||||
#endif
|
||||
|
||||
@@ -1200,19 +1204,26 @@ TEST(Core_InputOutput, FileStorage_DMatch_vector_vector)
|
||||
"%YAML:1.0\n"
|
||||
"---\n"
|
||||
"dvv:\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+000, 2, 3, 4,\n"
|
||||
" 1.5000000000000000e+000, 3, 2, 1, 5.0000000000000000e-001 ]\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-001, 1, 2, 3,\n"
|
||||
" -1.5000000000000000e+000 ]\n"
|
||||
" -\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+000 ]\n"
|
||||
" - [ 2, 3, 4, 1.5000000000000000e+000 ]\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-001 ]\n"
|
||||
" -\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-001 ]\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+000 ]\n"
|
||||
);
|
||||
#else
|
||||
EXPECT_STREQ(fs_result.c_str(),
|
||||
"%YAML:1.0\n"
|
||||
"---\n"
|
||||
"dvv:\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+00, 2, 3, 4, 1.5000000000000000e+00,\n"
|
||||
" 3, 2, 1, 5.0000000000000000e-01 ]\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-01, 1, 2, 3, -1.5000000000000000e+00 ]\n"
|
||||
" -\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n"
|
||||
" - [ 2, 3, 4, 1.5000000000000000e+00 ]\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n"
|
||||
" -\n"
|
||||
" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n"
|
||||
" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n"
|
||||
);
|
||||
#endif
|
||||
|
||||
@@ -1237,6 +1248,219 @@ TEST(Core_InputOutput, FileStorage_DMatch_vector_vector)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST(Core_InputOutput, FileStorage_KeyPoint)
|
||||
{
|
||||
cv::FileStorage fs("keypoint.xml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY);
|
||||
|
||||
cv::KeyPoint k(Point2f(1, 2), 16, 0, 100, 1, -1);
|
||||
|
||||
EXPECT_NO_THROW(fs << "k" << k);
|
||||
cv::String fs_result = fs.releaseAndGetString();
|
||||
EXPECT_STREQ(fs_result.c_str(),
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<opencv_storage>\n"
|
||||
"<k>\n"
|
||||
" 1. 2. 16. 0. 100. 1 -1</k>\n"
|
||||
"</opencv_storage>\n"
|
||||
);
|
||||
|
||||
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
|
||||
|
||||
cv::KeyPoint k_read;
|
||||
ASSERT_NO_THROW(fs_read["k"] >> k_read);
|
||||
|
||||
EXPECT_EQ(k.pt, k_read.pt);
|
||||
EXPECT_EQ(k.size, k_read.size);
|
||||
EXPECT_EQ(k.angle, k_read.angle);
|
||||
EXPECT_EQ(k.response, k_read.response);
|
||||
EXPECT_EQ(k.octave, k_read.octave);
|
||||
EXPECT_EQ(k.class_id, k_read.class_id);
|
||||
}
|
||||
|
||||
TEST(Core_InputOutput, FileStorage_KeyPoint_vector)
|
||||
{
|
||||
cv::FileStorage fs("keypoint.xml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY);
|
||||
|
||||
cv::KeyPoint k1(Point2f(1, 2), 16, 0, 100, 1, -1);
|
||||
cv::KeyPoint k2(Point2f(2, 3), 16, 45, 100, 1, -1);
|
||||
cv::KeyPoint k3(Point2f(1, 2), 16, 90, 100, 1, -1);
|
||||
std::vector<cv::KeyPoint> kv;
|
||||
kv.push_back(k1);
|
||||
kv.push_back(k2);
|
||||
kv.push_back(k3);
|
||||
|
||||
EXPECT_NO_THROW(fs << "kv" << kv);
|
||||
cv::String fs_result = fs.releaseAndGetString();
|
||||
EXPECT_STREQ(fs_result.c_str(),
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<opencv_storage>\n"
|
||||
"<kv>\n"
|
||||
" <_>\n"
|
||||
" 1. 2. 16. 0. 100. 1 -1</_>\n"
|
||||
" <_>\n"
|
||||
" 2. 3. 16. 45. 100. 1 -1</_>\n"
|
||||
" <_>\n"
|
||||
" 1. 2. 16. 90. 100. 1 -1</_></kv>\n"
|
||||
"</opencv_storage>\n"
|
||||
);
|
||||
|
||||
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
|
||||
|
||||
std::vector<cv::KeyPoint> kv_read;
|
||||
ASSERT_NO_THROW(fs_read["kv"] >> kv_read);
|
||||
|
||||
ASSERT_EQ(kv.size(), kv_read.size());
|
||||
for (size_t i = 0; i < kv.size(); i++)
|
||||
{
|
||||
EXPECT_EQ(kv[i].pt, kv_read[i].pt);
|
||||
EXPECT_EQ(kv[i].size, kv_read[i].size);
|
||||
EXPECT_EQ(kv[i].angle, kv_read[i].angle);
|
||||
EXPECT_EQ(kv[i].response, kv_read[i].response);
|
||||
EXPECT_EQ(kv[i].octave, kv_read[i].octave);
|
||||
EXPECT_EQ(kv[i].class_id, kv_read[i].class_id);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Core_InputOutput, FileStorage_KeyPoint_vector_vector)
|
||||
{
|
||||
cv::FileStorage fs("keypoint.xml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY);
|
||||
|
||||
cv::KeyPoint k1(Point2f(1, 2), 16, 0, 100, 1, -1);
|
||||
cv::KeyPoint k2(Point2f(2, 3), 16, 45, 100, 1, -1);
|
||||
cv::KeyPoint k3(Point2f(1, 2), 16, 90, 100, 1, -1);
|
||||
std::vector<cv::KeyPoint> kv1;
|
||||
kv1.push_back(k1);
|
||||
kv1.push_back(k2);
|
||||
kv1.push_back(k3);
|
||||
|
||||
std::vector<cv::KeyPoint> kv2;
|
||||
kv2.push_back(k3);
|
||||
kv2.push_back(k1);
|
||||
|
||||
std::vector< std::vector<cv::KeyPoint> > kvv;
|
||||
kvv.push_back(kv1);
|
||||
kvv.push_back(kv2);
|
||||
|
||||
EXPECT_NO_THROW(fs << "kvv" << kvv);
|
||||
cv::String fs_result = fs.releaseAndGetString();
|
||||
EXPECT_STREQ(fs_result.c_str(),
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<opencv_storage>\n"
|
||||
"<kvv>\n"
|
||||
" <_>\n"
|
||||
" <_>\n"
|
||||
" 1. 2. 16. 0. 100. 1 -1</_>\n"
|
||||
" <_>\n"
|
||||
" 2. 3. 16. 45. 100. 1 -1</_>\n"
|
||||
" <_>\n"
|
||||
" 1. 2. 16. 90. 100. 1 -1</_></_>\n"
|
||||
" <_>\n"
|
||||
" <_>\n"
|
||||
" 1. 2. 16. 90. 100. 1 -1</_>\n"
|
||||
" <_>\n"
|
||||
" 1. 2. 16. 0. 100. 1 -1</_></_></kvv>\n"
|
||||
"</opencv_storage>\n"
|
||||
);
|
||||
|
||||
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
|
||||
|
||||
std::vector< std::vector<cv::KeyPoint> > kvv_read;
|
||||
ASSERT_NO_THROW(fs_read["kvv"] >> kvv_read);
|
||||
|
||||
ASSERT_EQ(kvv.size(), kvv_read.size());
|
||||
for (size_t j = 0; j < kvv.size(); j++)
|
||||
{
|
||||
const std::vector<cv::KeyPoint>& kv = kvv[j];
|
||||
const std::vector<cv::KeyPoint>& kv_read = kvv_read[j];
|
||||
ASSERT_EQ(kvv.size(), kvv_read.size());
|
||||
for (size_t i = 0; i < kv.size(); i++)
|
||||
{
|
||||
EXPECT_EQ(kv[i].pt, kv_read[i].pt);
|
||||
EXPECT_EQ(kv[i].size, kv_read[i].size);
|
||||
EXPECT_EQ(kv[i].angle, kv_read[i].angle);
|
||||
EXPECT_EQ(kv[i].response, kv_read[i].response);
|
||||
EXPECT_EQ(kv[i].octave, kv_read[i].octave);
|
||||
EXPECT_EQ(kv[i].class_id, kv_read[i].class_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifdef CV__LEGACY_PERSISTENCE
|
||||
TEST(Core_InputOutput, FileStorage_LEGACY_DMatch_vector)
|
||||
{
|
||||
cv::DMatch d1(1, 2, 3, -1.5f);
|
||||
cv::DMatch d2(2, 3, 4, 1.5f);
|
||||
cv::DMatch d3(3, 2, 1, 0.5f);
|
||||
std::vector<cv::DMatch> dv;
|
||||
dv.push_back(d1);
|
||||
dv.push_back(d2);
|
||||
dv.push_back(d3);
|
||||
|
||||
String fs_result =
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<opencv_storage>\n"
|
||||
"<dv>\n"
|
||||
" 1 2 3 -1.5000000000000000e+00 2 3 4 1.5000000000000000e+00 3 2 1\n"
|
||||
" 5.0000000000000000e-01</dv>\n"
|
||||
"</opencv_storage>\n"
|
||||
;
|
||||
|
||||
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
|
||||
|
||||
std::vector<cv::DMatch> dv_read;
|
||||
ASSERT_NO_THROW(fs_read["dv"] >> dv_read);
|
||||
|
||||
ASSERT_EQ(dv.size(), dv_read.size());
|
||||
for (size_t i = 0; i < dv.size(); i++)
|
||||
{
|
||||
EXPECT_EQ(dv[i].queryIdx, dv_read[i].queryIdx);
|
||||
EXPECT_EQ(dv[i].trainIdx, dv_read[i].trainIdx);
|
||||
EXPECT_EQ(dv[i].imgIdx, dv_read[i].imgIdx);
|
||||
EXPECT_EQ(dv[i].distance, dv_read[i].distance);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST(Core_InputOutput, FileStorage_LEGACY_KeyPoint_vector)
|
||||
{
|
||||
cv::KeyPoint k1(Point2f(1, 2), 16, 0, 100, 1, -1);
|
||||
cv::KeyPoint k2(Point2f(2, 3), 16, 45, 100, 1, -1);
|
||||
cv::KeyPoint k3(Point2f(1, 2), 16, 90, 100, 1, -1);
|
||||
std::vector<cv::KeyPoint> kv;
|
||||
kv.push_back(k1);
|
||||
kv.push_back(k2);
|
||||
kv.push_back(k3);
|
||||
|
||||
cv::String fs_result =
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<opencv_storage>\n"
|
||||
"<kv>\n"
|
||||
" 1. 2. 16. 0. 100. 1 -1\n"
|
||||
" 2. 3. 16. 45. 100. 1 -1\n"
|
||||
" 1. 2. 16. 90. 100. 1 -1</kv>\n"
|
||||
"</opencv_storage>\n"
|
||||
;
|
||||
|
||||
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
|
||||
|
||||
std::vector<cv::KeyPoint> kv_read;
|
||||
ASSERT_NO_THROW(fs_read["kv"] >> kv_read);
|
||||
|
||||
ASSERT_EQ(kv.size(), kv_read.size());
|
||||
for (size_t i = 0; i < kv.size(); i++)
|
||||
{
|
||||
EXPECT_EQ(kv[i].pt, kv_read[i].pt);
|
||||
EXPECT_EQ(kv[i].size, kv_read[i].size);
|
||||
EXPECT_EQ(kv[i].angle, kv_read[i].angle);
|
||||
EXPECT_EQ(kv[i].response, kv_read[i].response);
|
||||
EXPECT_EQ(kv[i].octave, kv_read[i].octave);
|
||||
EXPECT_EQ(kv[i].class_id, kv_read[i].class_id);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(Core_InputOutput, FileStorage_format_xml)
|
||||
{
|
||||
FileStorage fs;
|
||||
|
||||
@@ -105,7 +105,7 @@ CV_OperationsTest::~CV_OperationsTest() {}
|
||||
template<typename _Tp> void CV_OperationsTest::TestType(Size sz, _Tp value)
|
||||
{
|
||||
cv::Mat_<_Tp> m(sz);
|
||||
CV_Assert(m.cols == sz.width && m.rows == sz.height && m.depth() == DataType<_Tp>::depth &&
|
||||
CV_Assert(m.cols == sz.width && m.rows == sz.height && m.depth() == cv::traits::Depth<_Tp>::value &&
|
||||
m.channels() == DataType<_Tp>::channels &&
|
||||
m.elemSize() == sizeof(_Tp) && m.step == m.elemSize()*m.cols);
|
||||
for( int y = 0; y < sz.height; y++ )
|
||||
|
||||
Reference in New Issue
Block a user