Skip to content

Commit 89ce2dc

Browse files
alaleksovrasov
authored andcommitted
core: DMatch I/O tests
1 parent 5d31d6e commit 89ce2dc

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

modules/core/test/test_io.cpp

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,3 +1084,131 @@ TEST(Core_InputOutput, filestorage_dmatch_io)
10841084
}
10851085
}
10861086
}
1087+
1088+
#if 0
1089+
TEST(Core_InputOutput, FileStorage_DMatch)
1090+
{
1091+
cv::FileStorage fs("dmatch.yml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY);
1092+
1093+
cv::DMatch d(1, 2, 3, -1.5f);
1094+
1095+
EXPECT_NO_THROW(fs << "d" << d);
1096+
cv::String fs_result = fs.releaseAndGetString();
1097+
EXPECT_STREQ(fs_result.c_str(), "%YAML:1.0\n---\nd: [ 1, 2, 3, -1.5000000000000000e+00 ]\n");
1098+
1099+
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
1100+
1101+
cv::DMatch d_read;
1102+
ASSERT_NO_THROW(fs_read["d"] >> d_read);
1103+
1104+
EXPECT_EQ(d.queryIdx, d_read.queryIdx);
1105+
EXPECT_EQ(d.trainIdx, d_read.trainIdx);
1106+
EXPECT_EQ(d.imgIdx, d_read.imgIdx);
1107+
EXPECT_EQ(d.distance, d_read.distance);
1108+
}
1109+
#endif
1110+
1111+
TEST(Core_InputOutput, FileStorage_DMatch_vector)
1112+
{
1113+
cv::FileStorage fs("dmatch.yml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY);
1114+
1115+
cv::DMatch d1(1, 2, 3, -1.5f);
1116+
cv::DMatch d2(2, 3, 4, 1.5f);
1117+
cv::DMatch d3(3, 2, 1, 0.5f);
1118+
std::vector<cv::DMatch> dv;
1119+
dv.push_back(d1);
1120+
dv.push_back(d2);
1121+
dv.push_back(d3);
1122+
1123+
EXPECT_NO_THROW(fs << "dv" << dv);
1124+
cv::String fs_result = fs.releaseAndGetString();
1125+
EXPECT_STREQ(fs_result.c_str(),
1126+
"%YAML:1.0\n"
1127+
"---\n"
1128+
#if 0
1129+
"dv:\n"
1130+
" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n"
1131+
" - [ 2, 3, 4, 1.5000000000000000e+00 ]\n"
1132+
" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n"
1133+
#else
1134+
"dv: [ 1, 2, 3, -1.5000000000000000e+00, 2, 3, 4, 1.5000000000000000e+00,\n"
1135+
" 3, 2, 1, 5.0000000000000000e-01 ]\n"
1136+
#endif
1137+
);
1138+
1139+
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
1140+
1141+
std::vector<cv::DMatch> dv_read;
1142+
ASSERT_NO_THROW(fs_read["dv"] >> dv_read);
1143+
1144+
ASSERT_EQ(dv.size(), dv_read.size());
1145+
for (size_t i = 0; i < dv.size(); i++)
1146+
{
1147+
EXPECT_EQ(dv[i].queryIdx, dv_read[i].queryIdx);
1148+
EXPECT_EQ(dv[i].trainIdx, dv_read[i].trainIdx);
1149+
EXPECT_EQ(dv[i].imgIdx, dv_read[i].imgIdx);
1150+
EXPECT_EQ(dv[i].distance, dv_read[i].distance);
1151+
}
1152+
}
1153+
1154+
TEST(Core_InputOutput, FileStorage_DMatch_vector_vector)
1155+
{
1156+
cv::FileStorage fs("dmatch.yml", cv::FileStorage::WRITE | cv::FileStorage::MEMORY);
1157+
1158+
cv::DMatch d1(1, 2, 3, -1.5f);
1159+
cv::DMatch d2(2, 3, 4, 1.5f);
1160+
cv::DMatch d3(3, 2, 1, 0.5f);
1161+
std::vector<cv::DMatch> dv1;
1162+
dv1.push_back(d1);
1163+
dv1.push_back(d2);
1164+
dv1.push_back(d3);
1165+
1166+
std::vector<cv::DMatch> dv2;
1167+
dv2.push_back(d3);
1168+
dv2.push_back(d1);
1169+
1170+
std::vector< std::vector<cv::DMatch> > dvv;
1171+
dvv.push_back(dv1);
1172+
dvv.push_back(dv2);
1173+
1174+
EXPECT_NO_THROW(fs << "dvv" << dvv);
1175+
cv::String fs_result = fs.releaseAndGetString();
1176+
EXPECT_STREQ(fs_result.c_str(),
1177+
"%YAML:1.0\n"
1178+
"---\n"
1179+
"dvv:\n"
1180+
#if 0
1181+
" -\n"
1182+
" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n"
1183+
" - [ 2, 3, 4, 1.5000000000000000e+00 ]\n"
1184+
" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n"
1185+
" -\n"
1186+
" - [ 3, 2, 1, 5.0000000000000000e-01 ]\n"
1187+
" - [ 1, 2, 3, -1.5000000000000000e+00 ]\n"
1188+
#else
1189+
" - [ 1, 2, 3, -1.5000000000000000e+00, 2, 3, 4, 1.5000000000000000e+00,\n"
1190+
" 3, 2, 1, 5.0000000000000000e-01 ]\n"
1191+
" - [ 3, 2, 1, 5.0000000000000000e-01, 1, 2, 3, -1.5000000000000000e+00 ]\n"
1192+
#endif
1193+
);
1194+
1195+
cv::FileStorage fs_read(fs_result, cv::FileStorage::READ | cv::FileStorage::MEMORY);
1196+
1197+
std::vector< std::vector<cv::DMatch> > dvv_read;
1198+
ASSERT_NO_THROW(fs_read["dvv"] >> dvv_read);
1199+
1200+
ASSERT_EQ(dvv.size(), dvv_read.size());
1201+
for (size_t j = 0; j < dvv.size(); j++)
1202+
{
1203+
const std::vector<cv::DMatch>& dv = dvv[j];
1204+
const std::vector<cv::DMatch>& dv_read = dvv_read[j];
1205+
ASSERT_EQ(dvv.size(), dvv_read.size());
1206+
for (size_t i = 0; i < dv.size(); i++)
1207+
{
1208+
EXPECT_EQ(dv[i].queryIdx, dv_read[i].queryIdx);
1209+
EXPECT_EQ(dv[i].trainIdx, dv_read[i].trainIdx);
1210+
EXPECT_EQ(dv[i].imgIdx, dv_read[i].imgIdx);
1211+
EXPECT_EQ(dv[i].distance, dv_read[i].distance);
1212+
}
1213+
}
1214+
}

0 commit comments

Comments
 (0)