summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2013-07-27 09:07:42 +0200
committerStanislaw Halik <sthalik@misaki.pl>2013-07-27 09:07:42 +0200
commite4f1be83f42742a2fc9a1606695d89a442999d1c (patch)
tree61ea5d18c3a0612017beefa02b44dd6541b00833 /ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
parent7c6208d53fa7f96fb1e844b23b9ad341c22f0fc8 (diff)
Import aruco tracker
Diffstat (limited to 'ftnoir_tracker_aruco/ftnoir_tracker_aruco.h')
-rw-r--r--ftnoir_tracker_aruco/ftnoir_tracker_aruco.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
new file mode 100644
index 00000000..cbda40bf
--- /dev/null
+++ b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h
@@ -0,0 +1,85 @@
+/* Copyright (c) 2013 Stanislaw Halik <sthalik@misaki.pl>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ */
+
+#ifndef FTNOIR_TRACKER_HT_H
+#define FTNOIR_TRACKER_HT_H
+
+#include "ftnoir_tracker_base/ftnoir_tracker_base.h"
+#include "ui_aruco-trackercontrols.h"
+#include "video_widget.h"
+#include <QObject>
+#include <QTimer>
+#include <QThread>
+#include <QMutex>
+#include <QHBoxLayout>
+#include <opencv2/opencv.hpp>
+
+class Tracker : public QThread, public ITracker
+{
+ Q_OBJECT
+public:
+ Tracker();
+ ~Tracker();
+ void StartTracker(QFrame* frame);
+ bool GiveHeadPoseData(double *data);
+ bool enableTX, enableTY, enableTZ, enableRX, enableRY, enableRZ;
+ bool NeedsTimeToFinish() {
+ return true;
+ }
+ void WaitForExit() {
+ stop = true;
+ wait();
+ }
+ void run();
+private:
+ QMutex mtx;
+ QTimer timer;
+ VideoWidget* videoWidget;
+ QHBoxLayout* layout;
+ volatile bool fresh, stop;
+ float fov;
+ int camera_index;
+ float dc[5];
+ int force_fps, force_width, force_height;
+ void load_settings();
+ double pose[6];
+ int marker_size;
+ cv::Mat frame;
+private slots:
+ void paint_widget();
+};
+
+// Widget that has controls for FTNoIR protocol client-settings.
+class TrackerControls : public QWidget, public ITrackerDialog
+{
+ Q_OBJECT
+public:
+
+ explicit TrackerControls();
+ virtual ~TrackerControls();
+ void showEvent ( QShowEvent * event );
+
+ void Initialize(QWidget *parent);
+ void registerTracker(ITracker *tracker) {}
+ void unRegisterTracker() {}
+
+private:
+ Ui::Form ui;
+ void loadSettings();
+ void save();
+ bool settingsDirty;
+
+private slots:
+ void doOK();
+ void doCancel();
+ void settingChanged() { settingsDirty = true; }
+ void settingChanged(int) { settingsDirty = true; }
+ void settingChanged(double) { settingsDirty = true; }
+};
+
+#endif
+