|
|
|
@ -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; |
|
|
|
|