| 1215 | } |
| 1216 | |
| 1217 | bool Tracking::ParseORBParamFile(cv::FileStorage &fSettings) |
| 1218 | { |
| 1219 | bool b_miss_params = false; |
| 1220 | int nFeatures, nLevels, fIniThFAST, fMinThFAST; |
| 1221 | float fScaleFactor; |
| 1222 | |
| 1223 | cv::FileNode node = fSettings["ORBextractor.nFeatures"]; |
| 1224 | if(!node.empty() && node.isInt()) |
| 1225 | { |
| 1226 | nFeatures = node.operator int(); |
| 1227 | } |
| 1228 | else |
| 1229 | { |
| 1230 | std::cerr << "*ORBextractor.nFeatures parameter doesn't exist or is not an integer*" << std::endl; |
| 1231 | b_miss_params = true; |
| 1232 | } |
| 1233 | |
| 1234 | node = fSettings["ORBextractor.scaleFactor"]; |
| 1235 | if(!node.empty() && node.isReal()) |
| 1236 | { |
| 1237 | fScaleFactor = node.real(); |
| 1238 | } |
| 1239 | else |
| 1240 | { |
| 1241 | std::cerr << "*ORBextractor.scaleFactor parameter doesn't exist or is not a real number*" << std::endl; |
| 1242 | b_miss_params = true; |
| 1243 | } |
| 1244 | |
| 1245 | node = fSettings["ORBextractor.nLevels"]; |
| 1246 | if(!node.empty() && node.isInt()) |
| 1247 | { |
| 1248 | nLevels = node.operator int(); |
| 1249 | } |
| 1250 | else |
| 1251 | { |
| 1252 | std::cerr << "*ORBextractor.nLevels parameter doesn't exist or is not an integer*" << std::endl; |
| 1253 | b_miss_params = true; |
| 1254 | } |
| 1255 | |
| 1256 | node = fSettings["ORBextractor.iniThFAST"]; |
| 1257 | if(!node.empty() && node.isInt()) |
| 1258 | { |
| 1259 | fIniThFAST = node.operator int(); |
| 1260 | } |
| 1261 | else |
| 1262 | { |
| 1263 | std::cerr << "*ORBextractor.iniThFAST parameter doesn't exist or is not an integer*" << std::endl; |
| 1264 | b_miss_params = true; |
| 1265 | } |
| 1266 | |
| 1267 | node = fSettings["ORBextractor.minThFAST"]; |
| 1268 | if(!node.empty() && node.isInt()) |
| 1269 | { |
| 1270 | fMinThFAST = node.operator int(); |
| 1271 | } |
| 1272 | else |
| 1273 | { |
| 1274 | std::cerr << "*ORBextractor.minThFAST parameter doesn't exist or is not an integer*" << std::endl; |