23 #ifndef _ARMARX_VisionX_FeatureLearning_WidgetController_H
24 #define _ARMARX_VisionX_FeatureLearning_WidgetController_H
29 #include <QFileDialog>
30 #include <QMessageBox>
43 #include <VisionX/gui-plugins/FeatureLearning/ui_FeatureLearningWidget.h>
47 #include <Features/HarrisSIFTFeatures/HarrisSIFTFeatureCalculator.h>
48 #include <Features/SIFTFeatures/SIFTFeatureEntry.h>
49 #include <Math/FloatMatrix.h>
50 #include <Math/LinearAlgebra.h>
51 #include <TexturedRecognition/TexturedFeatureSet.h>
96 virtual void loadSettings(QSettings* settings)
override;
101 virtual void saveSettings(QSettings* settings)
override;
110 return "VisionX.FeatureLearning";
118 virtual void onInitImageProcessor()
override;
123 virtual void onConnectImageProcessor()
override;
128 virtual void onDisconnectImageProcessor()
override;
133 virtual void onExitImageProcessor()
override;
138 virtual void process()
override;
143 void addPolygonPoint(
int,
float x,
float y);
144 void connectButtonClicked(
bool toggled);
145 void disconnectButtonClicked(
bool toggled);
146 void loadFeaturesButtonClicked(
bool toggled);
147 void saveFeaturesButtonClicked(
bool toggled);
148 void pausePlayButtonClicked(
bool toggled);
149 void addFeaturesButtonClicked(
bool toggled);
150 void clearFeaturesButtonClicked(
bool toggled);
152 void thresholdChanged(
double threshold);
154 void maxFeaturesChanged(
int maxFeatures);
158 void imageProviderConnected(
bool connected);
164 Ui::FeatureLearningWidget widget;
165 QWidget* widgetPointer;
167 void loadFeatureSet(QString filePath);
168 void saveFeatureSet(QString filePath,
float w,
float h,
float d);
169 void updateFeatures();
171 void clearFeatures();
173 void updateSelection();
175 void connectToProvider();
176 void disconnectFromProvider();
178 void updatePausePlayButtonText();
179 void updateImageMonitorUI();
180 void updateFeaturesUI();
182 static CFloatMatrix* createCuboid(
float w,
float h,
float d);
183 static void addRectangle(CFloatMatrix*
object,
200 static void addTriangle(CFloatMatrix*
object,
217 visionx::ImageProviderInterfacePrx imageProviderPrx;
223 int numSelectedPoints;
225 CByteImage** cameraImages;
226 CByteImage* visualizationImage;
227 CByteImage* grayImage;
233 std::string imageProviderName;
235 CHarrisSIFTFeatureCalculator* featureCalculator;
236 CTexturedFeatureSet* objectFeatureSet;
237 CTexturedFeatureSet* viewFeatureSet;
239 bool undistortImages;
240 std::recursive_mutex imageMutex;
243 Eigen::ArrayX2f points;
251 QSettings mySettings;
253 std::mutex featureCalculatorMutex;