diff --git a/modules/flann/include/opencv2/flann/lsh_index.h b/modules/flann/include/opencv2/flann/lsh_index.h index cf37bc1c6f3acdde98979fb1049f308d0b3ee8bb..86c0654051523c9d3e49c135e26f1d915e5deecb 100644 --- a/modules/flann/include/opencv2/flann/lsh_index.h +++ b/modules/flann/include/opencv2/flann/lsh_index.h @@ -60,13 +60,13 @@ struct LshIndexParams : public IndexParams { LshIndexParams(unsigned int table_number = 12, unsigned int key_size = 20, unsigned int multi_probe_level = 2) { - (* this)["algorithm"] = FLANN_INDEX_LSH; + (*this)["algorithm"] = FLANN_INDEX_LSH; // The number of hash tables to use - (*this)["table_number"] = table_number; + (*this)["table_number"] = static_cast(table_number); // The length of the key in the hash tables - (*this)["key_size"] = key_size; + (*this)["key_size"] = static_cast(key_size); // Number of levels to use in multi-probe (0 for standard LSH) - (*this)["multi_probe_level"] = multi_probe_level; + (*this)["multi_probe_level"] = static_cast(multi_probe_level); } }; @@ -94,9 +94,9 @@ public: { // cv::flann::IndexParams sets integer params as 'int', so it is used with get_param // in place of 'unsigned int' - table_number_ = (unsigned int)get_param(index_params_,"table_number",12); - key_size_ = (unsigned int)get_param(index_params_,"key_size",20); - multi_probe_level_ = (unsigned int)get_param(index_params_,"multi_probe_level",2); + table_number_ = get_param(index_params_,"table_number",12); + key_size_ = get_param(index_params_,"key_size",20); + multi_probe_level_ = get_param(index_params_,"multi_probe_level",2); feature_size_ = (unsigned)dataset_.cols; fill_xor_mask(0, key_size_, multi_probe_level_, xor_masks_); @@ -112,7 +112,7 @@ public: void buildIndex() CV_OVERRIDE { tables_.resize(table_number_); - for (unsigned int i = 0; i < table_number_; ++i) { + for (int i = 0; i < table_number_; ++i) { lsh::LshTable& table = tables_[i]; table = lsh::LshTable(feature_size_, key_size_); @@ -378,11 +378,11 @@ private: IndexParams index_params_; /** table number */ - unsigned int table_number_; + int table_number_; /** key size */ - unsigned int key_size_; + int key_size_; /** How far should we look for neighbors in multi-probe LSH */ - unsigned int multi_probe_level_; + int multi_probe_level_; /** The XOR masks to apply to a key to get the neighboring buckets */ std::vector xor_masks_; diff --git a/modules/flann/test/test_lshtable_badarg.cpp b/modules/flann/test/test_lshtable_badarg.cpp index 8fb25b44cb36519aefa67e068fa23942e4e0f199..f75925f659c1b4286f148e8a8a6427808c381301 100644 --- a/modules/flann/test/test_lshtable_badarg.cpp +++ b/modules/flann/test/test_lshtable_badarg.cpp @@ -90,4 +90,10 @@ void CV_LshTableBadArgTest::run( int /* start_from */ ) TEST(Flann_LshTable, badarg) { CV_LshTableBadArgTest test; test.safe_run(); } +TEST(Flann_LshTable, bad_any_cast) { + Mat features = Mat::ones(1, 64, CV_8U); + EXPECT_NO_THROW(flann::GenericIndex >( + features, cvflann::LshIndexParams())); +} + }} // namespace