ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
database_management_widget.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <QtCore>
11 #include <QtWidgets>
12 #include <unordered_map>
13 
14 #include "base/database.h"
15 #include "ui/image_viewer_widget.h"
16 #include "util/misc.h"
17 #include "util/option_manager.h"
18 
19 namespace colmap {
20 
22 // Matches
24 
25 class TwoViewInfoTab : public QWidget {
26 public:
28  TwoViewInfoTab(QWidget* parent, OptionManager* options, Database* database);
29 
30  void Clear();
31 
32 protected:
33  void InitializeTable(const QStringList& table_header);
34  void ShowMatches();
35  void FillTable();
36 
39 
40  const Image* image_;
41  std::vector<std::pair<const Image*, FeatureMatches>> matches_;
42  std::vector<int> configs_;
43  std::vector<size_t> sorted_matches_idxs_;
44 
45  QTableWidget* table_widget_;
46  QLabel* info_label_;
48 };
49 
50 class MatchesTab : public TwoViewInfoTab {
51 public:
52  MatchesTab(QWidget* parent, OptionManager* options, Database* database);
53 
54  void Reload(const std::vector<Image>& images, const image_t image_id);
55 };
56 
58 public:
59  TwoViewGeometriesTab(QWidget* parent,
60  OptionManager* options,
61  Database* database);
62 
63  void Reload(const std::vector<Image>& images, const image_t image_id);
64 };
65 
66 class OverlappingImagesWidget : public QWidget {
67 public:
68  OverlappingImagesWidget(QWidget* parent,
69  OptionManager* options,
70  Database* database);
71 
72  void ShowMatches(const std::vector<Image>& images, const image_t image_id);
73 
74 private:
75  void closeEvent(QCloseEvent* event);
76 
77  QWidget* parent_;
78 
79  OptionManager* options_;
80 
81  QTabWidget* tab_widget_;
82  MatchesTab* matches_tab_;
83  TwoViewGeometriesTab* two_view_geometries_tab_;
84 };
85 
87 // Images, Cameras
89 
90 class CameraTab : public QWidget {
91 public:
92  CameraTab(QWidget* parent, Database* database);
93 
94  void Reload();
95  void Clear();
96 
97 private:
98  void itemChanged(QTableWidgetItem* item);
99  void Add();
100  void SetModel();
101 
102  Database* database_;
103 
104  std::vector<Camera> cameras_;
105 
106  QTableWidget* table_widget_;
107  QLabel* info_label_;
108 };
109 
110 class ImageTab : public QWidget {
111 public:
112  ImageTab(QWidget* parent,
113  CameraTab* camera_tab,
114  OptionManager* options,
115  Database* database);
116 
117  void Reload();
118  void Clear();
119 
120 private:
121  void itemChanged(QTableWidgetItem* item);
122 
123  void ShowImage();
124  void ShowMatches();
125  void SetCamera();
126  void SplitCamera();
127 
128  CameraTab* camera_tab_;
129 
130  OptionManager* options_;
131  Database* database_;
132 
133  std::vector<Image> images_;
134 
135  QTableWidget* table_widget_;
136  QLabel* info_label_;
137 
138  OverlappingImagesWidget* overlapping_images_widget_;
139 
140  FeatureImageViewerWidget* image_viewer_widget_;
141 };
142 
143 class DatabaseManagementWidget : public QWidget {
144 public:
145  DatabaseManagementWidget(QWidget* parent, OptionManager* options);
146 
147 private:
148  void showEvent(QShowEvent* event);
149  void hideEvent(QHideEvent* event);
150 
151  void ClearMatches();
152  void ClearTwoViewGeometries();
153 
154  QWidget* parent_;
155 
156  OptionManager* options_;
157  Database database_;
158 
159  QTabWidget* tab_widget_;
160  ImageTab* image_tab_;
161  CameraTab* camera_tab_;
162 };
163 
164 } // namespace colmap
MouseEvent event
CameraTab(QWidget *parent, Database *database)
DatabaseManagementWidget(QWidget *parent, OptionManager *options)
ImageTab(QWidget *parent, CameraTab *camera_tab, OptionManager *options, Database *database)
void Reload(const std::vector< Image > &images, const image_t image_id)
MatchesTab(QWidget *parent, OptionManager *options, Database *database)
OverlappingImagesWidget(QWidget *parent, OptionManager *options, Database *database)
void ShowMatches(const std::vector< Image > &images, const image_t image_id)
TwoViewGeometriesTab(QWidget *parent, OptionManager *options, Database *database)
void Reload(const std::vector< Image > &images, const image_t image_id)
void InitializeTable(const QStringList &table_header)
std::vector< size_t > sorted_matches_idxs_
std::vector< std::pair< const Image *, FeatureMatches > > matches_
FeatureImageViewerWidget * matches_viewer_widget_
uint32_t image_t
Definition: types.h:61