@@ -1084,3 +1084,131 @@ TEST(Core_InputOutput, filestorage_dmatch_io)
1084
1084
}
1085
1085
}
1086
1086
}
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