44 virtual void Run() = 0;
91 std::string match_list_path_;
92 QComboBox* match_type_cb_;
99 grid_layout_(new QGridLayout(this)),
124 "confidence", 0, 1, 0.00001, 5);
128 "min_inlier_ratio", 0, 1, 0.001, 3);
138 QScrollArea* options_scroll_area =
new QScrollArea(
this);
139 options_scroll_area->setAlignment(Qt::AlignHCenter);
143 QPushButton* run_button =
new QPushButton(tr(
"Run"),
this);
177 "loop_detection_period");
180 "loop_detection_num_images");
183 "loop_detection_num_nearest_neighbors");
186 "loop_detection_num_checks", 1);
189 ->loop_detection_num_images_after_verification,
190 "loop_detection_num_images_after_verification", 0);
193 "loop_detection_max_num_features", -1);
205 QMessageBox::critical(
this,
"", tr(
"Invalid vocabulary tree path."));
222 "num_nearest_neighbors");
227 "num_images_after_verification", 0);
240 QMessageBox::critical(
this,
"", tr(
"Invalid vocabulary tree path."));
256 "max_num_neighbors");
294 match_type_cb_ =
new QComboBox(
this);
295 match_type_cb_->addItem(QString(
"Image pairs"));
296 match_type_cb_->addItem(QString(
"Raw feature matches"));
297 match_type_cb_->addItem(QString(
"Inlier feature matches"));
311 QMessageBox::critical(
this,
"", tr(
"Path does not exist!"));
315 Thread* matcher =
nullptr;
316 if (match_type_cb_->currentIndex() == 0) {
324 if (match_type_cb_->currentIndex() == 1) {
326 }
else if (match_type_cb_->currentIndex() == 2) {
342 setWindowFlags(Qt::Window);
343 setWindowTitle(
"Feature matching");
345 QGridLayout* grid =
new QGridLayout(
this);
347 tab_widget_ =
new QTabWidget(
this);
358 grid->addWidget(tab_widget_, 0, 0);
361 void FeatureMatchingWidget::showEvent(QShowEvent*
event) {
362 parent_->setDisabled(
true);
365 void FeatureMatchingWidget::hideEvent(QHideEvent*
event) {
366 parent_->setEnabled(
true);
CustomMatchingTab(QWidget *parent, OptionManager *options)
ExhaustiveMatchingTab(QWidget *parent, OptionManager *options)
ThreadControlWidget * thread_control_widget_
void CreateGeneralOptions()
OptionsWidget * options_widget_
FeatureMatchingTab(QWidget *parent, OptionManager *options)
QGridLayout * grid_layout_
std::shared_ptr< SequentialMatchingOptions > sequential_matching
std::shared_ptr< TransitiveMatchingOptions > transitive_matching
std::shared_ptr< std::string > database_path
std::shared_ptr< SiftMatchingOptions > sift_matching
std::shared_ptr< VocabTreeMatchingOptions > vocab_tree_matching
std::shared_ptr< ExhaustiveMatchingOptions > exhaustive_matching
std::shared_ptr< SpatialMatchingOptions > spatial_matching
std::shared_ptr< ImagePairsMatchingOptions > image_pairs_matching
SequentialMatchingTab(QWidget *parent, OptionManager *options)
SpatialMatchingTab(QWidget *parent, OptionManager *options)
TransitiveMatchingTab(QWidget *parent, OptionManager *options)
VocabTreeMatchingTab(QWidget *parent, OptionManager *options)
bool ExistsFile(const std::string &path)
std::string match_list_path
std::string match_list_path