| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef COLMAP_SRC_UI_DATABASE_MANAGEMENT_WIDGET_H_ |
| | #define COLMAP_SRC_UI_DATABASE_MANAGEMENT_WIDGET_H_ |
| |
|
| | #include <unordered_map> |
| |
|
| | #include <QtCore> |
| | #include <QtWidgets> |
| |
|
| | #include "base/database.h" |
| | #include "ui/image_viewer_widget.h" |
| | #include "util/misc.h" |
| | #include "util/option_manager.h" |
| |
|
| | namespace colmap { |
| |
|
| | |
| | |
| | |
| |
|
| | class TwoViewInfoTab : public QWidget { |
| | public: |
| | TwoViewInfoTab() {} |
| | TwoViewInfoTab(QWidget* parent, OptionManager* options, Database* database); |
| |
|
| | void Clear(); |
| |
|
| | protected: |
| | void InitializeTable(const QStringList& table_header); |
| | void ShowMatches(); |
| | void FillTable(); |
| |
|
| | OptionManager* options_; |
| | Database* database_; |
| |
|
| | const Image* image_; |
| | std::vector<std::pair<const Image*, FeatureMatches>> matches_; |
| | std::vector<int> configs_; |
| | std::vector<size_t> sorted_matches_idxs_; |
| |
|
| | QTableWidget* table_widget_; |
| | QLabel* info_label_; |
| | FeatureImageViewerWidget* matches_viewer_widget_; |
| | }; |
| |
|
| | class MatchesTab : public TwoViewInfoTab { |
| | public: |
| | MatchesTab(QWidget* parent, OptionManager* options, Database* database); |
| |
|
| | void Reload(const std::vector<Image>& images, const image_t image_id); |
| | }; |
| |
|
| | class TwoViewGeometriesTab : public TwoViewInfoTab { |
| | public: |
| | TwoViewGeometriesTab(QWidget* parent, OptionManager* options, |
| | Database* database); |
| |
|
| | void Reload(const std::vector<Image>& images, const image_t image_id); |
| | }; |
| |
|
| | class OverlappingImagesWidget : public QWidget { |
| | public: |
| | OverlappingImagesWidget(QWidget* parent, OptionManager* options, |
| | Database* database); |
| |
|
| | void ShowMatches(const std::vector<Image>& images, const image_t image_id); |
| |
|
| | private: |
| | void closeEvent(QCloseEvent* event); |
| |
|
| | QWidget* parent_; |
| |
|
| | OptionManager* options_; |
| |
|
| | QTabWidget* tab_widget_; |
| | MatchesTab* matches_tab_; |
| | TwoViewGeometriesTab* two_view_geometries_tab_; |
| | }; |
| |
|
| | |
| | |
| | |
| |
|
| | class CameraTab : public QWidget { |
| | public: |
| | CameraTab(QWidget* parent, Database* database); |
| |
|
| | void Reload(); |
| | void Clear(); |
| |
|
| | private: |
| | void itemChanged(QTableWidgetItem* item); |
| | void Add(); |
| | void SetModel(); |
| |
|
| | Database* database_; |
| |
|
| | std::vector<Camera> cameras_; |
| |
|
| | QTableWidget* table_widget_; |
| | QLabel* info_label_; |
| | }; |
| |
|
| | class ImageTab : public QWidget { |
| | public: |
| | ImageTab(QWidget* parent, CameraTab* camera_tab, OptionManager* options, |
| | Database* database); |
| |
|
| | void Reload(); |
| | void Clear(); |
| |
|
| | private: |
| | void itemChanged(QTableWidgetItem* item); |
| |
|
| | void ShowImage(); |
| | void ShowMatches(); |
| | void SetCamera(); |
| | void SplitCamera(); |
| |
|
| | CameraTab* camera_tab_; |
| |
|
| | OptionManager* options_; |
| | Database* database_; |
| |
|
| | std::vector<Image> images_; |
| |
|
| | QTableWidget* table_widget_; |
| | QLabel* info_label_; |
| |
|
| | OverlappingImagesWidget* overlapping_images_widget_; |
| |
|
| | FeatureImageViewerWidget* image_viewer_widget_; |
| | }; |
| |
|
| | class DatabaseManagementWidget : public QWidget { |
| | public: |
| | DatabaseManagementWidget(QWidget* parent, OptionManager* options); |
| |
|
| | private: |
| | void showEvent(QShowEvent* event); |
| | void hideEvent(QHideEvent* event); |
| |
|
| | void ClearMatches(); |
| | void ClearTwoViewGeometries(); |
| |
|
| | QWidget* parent_; |
| |
|
| | OptionManager* options_; |
| | Database database_; |
| |
|
| | QTabWidget* tab_widget_; |
| | ImageTab* image_tab_; |
| | CameraTab* camera_tab_; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|