summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_ht
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2013-12-30 11:03:00 +0100
committerStanislaw Halik <sthalik@misaki.pl>2013-12-30 11:03:00 +0100
commit60a8fd51ba9cd77b1944d10cab75e095db7b2815 (patch)
tree9189ba4078da0b63102c2ea33bfb1720f5ee4180 /ftnoir_tracker_ht
parent2a3b4460da901256a60fc2e4bc90adc14284bbf3 (diff)
ht: reduce boilerplate
Diffstat (limited to 'ftnoir_tracker_ht')
-rw-r--r--ftnoir_tracker_ht/ftnoir_tracker_ht.cpp72
-rw-r--r--ftnoir_tracker_ht/ftnoir_tracker_ht.h30
2 files changed, 47 insertions, 55 deletions
diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
index 333ce28a..e154557e 100644
--- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
+++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp
@@ -91,7 +91,7 @@ static resolution_tuple resolution_choices[] = {
void Tracker::load_settings(ht_config_t* config)
{
int nframes = 0;
- switch (static_cast<int>(fps))
+ switch (static_cast<int>(s.fps))
{
default:
case 0:
@@ -109,13 +109,13 @@ void Tracker::load_settings(ht_config_t* config)
}
config->classification_delay = 500;
- config->field_of_view = fov;
+ config->field_of_view = s.fov;
config->pyrlk_pyramids = 0;
config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21;
config->max_keypoints = 350;
config->keypoint_distance = 3.4;
config->force_fps = nframes;
- config->camera_index = camera_idx - 1;
+ config->camera_index = s.camera_idx - 1;
config->ransac_num_iters = 100;
config->ransac_max_reprojection_error = 8;
config->ransac_max_inlier_error = 8;
@@ -123,7 +123,7 @@ void Tracker::load_settings(ht_config_t* config)
config->ransac_max_mean_error = 6.5;
config->debug = 0;
config->ransac_min_features = 0.72;
- int res = resolution;
+ int res = s.resolution;
if (res < 0 || res >= (int)(sizeof(resolution_choices) / sizeof(resolution_tuple)))
res = 0;
resolution_tuple r = resolution_choices[res];
@@ -135,17 +135,6 @@ void Tracker::load_settings(ht_config_t* config)
}
Tracker::Tracker() :
- b(bundle("HT-Tracker")),
- enableTX(b, "enable-tx", true),
- enableTY(b, "enable-ty", true),
- enableTZ(b, "enable-tz", true),
- enableRX(b, "enable-rx", true),
- enableRY(b, "enable-ry", true),
- enableRZ(b, "enable-rz", true),
- fov(b, "fov", 56),
- fps(b, "fps", 0),
- camera_idx(b, "camera-index", 0),
- resolution(b, "resolution", 0),
lck_shm(HT_SHM_NAME, HT_MUTEX_NAME, sizeof(ht_shm_t)),
shm(reinterpret_cast<ht_shm_t*>(lck_shm.mem)),
videoWidget(nullptr),
@@ -205,19 +194,19 @@ void Tracker::GetHeadPoseData(double *data)
shm->frame.width = 0;
}
if (shm->result.filled) {
- if (enableRX)
+ if (s.enableRX)
data[Yaw] = shm->result.rotx;
- if (enableRY) {
+ if (s.enableRY) {
data[Pitch] = shm->result.roty;
}
- if (enableRZ) {
+ if (s.enableRZ) {
data[Roll] = shm->result.rotz;
}
- if (enableTX)
+ if (s.enableTX)
data[TX] = shm->result.tx;
- if (enableTY)
+ if (s.enableTY)
data[TY] = shm->result.ty;
- if (enableTZ)
+ if (s.enableTZ)
data[TZ] = shm->result.tz;
if (fabs(data[Yaw]) > 60 || fabs(data[Pitch]) > 50 || fabs(data[Roll]) > 40)
{
@@ -265,34 +254,23 @@ extern "C" FTNOIR_TRACKER_BASE_EXPORT ITrackerDialog* CALLING_CONVENTION GetDial
return new TrackerControls;
}
-TrackerControls::TrackerControls() :
- b(bundle("HT-Tracker")),
- enableTX(b, "enable-tx", true),
- enableTY(b, "enable-ty", true),
- enableTZ(b, "enable-tz", true),
- enableRX(b, "enable-rx", true),
- enableRY(b, "enable-ry", true),
- enableRZ(b, "enable-rz", true),
- fov(b, "fov", 56),
- fps(b, "fps", 0),
- camera_idx(b, "camera-index", 0),
- resolution(b, "resolution", 0)
+TrackerControls::TrackerControls()
{
ui.setupUi(this);
ui.cameraName->clear();
QList<QString> names = get_camera_names();
names.prepend("Any available");
ui.cameraName->addItems(names);
- tie_setting(camera_idx, ui.cameraName);
- tie_setting(fps, ui.cameraFPS);
- tie_setting(fov, ui.cameraFOV);
- tie_setting(enableTX, ui.tx);
- tie_setting(enableTY, ui.ty);
- tie_setting(enableTZ, ui.tz);
- tie_setting(enableRX, ui.rx);
- tie_setting(enableRY, ui.ry);
- tie_setting(enableRZ, ui.rz);
- tie_setting(resolution, ui.resolution);
+ tie_setting(s.camera_idx, ui.cameraName);
+ tie_setting(s.fps, ui.cameraFPS);
+ tie_setting(s.fov, ui.cameraFOV);
+ tie_setting(s.enableTX, ui.tx);
+ tie_setting(s.enableTY, ui.ty);
+ tie_setting(s.enableTZ, ui.tz);
+ tie_setting(s.enableRX, ui.rx);
+ tie_setting(s.enableRY, ui.ry);
+ tie_setting(s.enableRZ, ui.rz);
+ tie_setting(s.resolution, ui.resolution);
connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
}
@@ -304,13 +282,13 @@ void TrackerControls::Initialize(QWidget*)
void TrackerControls::doOK()
{
- b->save();
+ s.b->save();
this->close();
}
void TrackerControls::doCancel()
{
- if (!b->modifiedp())
+ if (!s.b->modifiedp())
{
close();
return;
@@ -322,11 +300,11 @@ void TrackerControls::doCancel()
switch (ret) {
case QMessageBox::Save:
- b->save();
+ s.b->save();
this->close();
break;
case QMessageBox::Discard:
- b->revert();
+ s.b->revert();
this->close();
break;
default:
diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.h b/ftnoir_tracker_ht/ftnoir_tracker_ht.h
index 3140e99c..f45e54f9 100644
--- a/ftnoir_tracker_ht/ftnoir_tracker_ht.h
+++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.h
@@ -18,6 +18,26 @@
#include "facetracknoir/options.hpp"
using namespace options;
+struct settings {
+ pbundle b;
+ value<bool> enableTX, enableTY, enableTZ, enableRX, enableRY, enableRZ;
+ value<double> fov;
+ value<int> fps, camera_idx, resolution;
+ settings() :
+ b(bundle("HT-Tracker")),
+ enableTX(b, "enable-tx", true),
+ enableTY(b, "enable-ty", true),
+ enableTZ(b, "enable-tz", true),
+ enableRX(b, "enable-rx", true),
+ enableRY(b, "enable-ry", true),
+ enableRZ(b, "enable-rz", true),
+ fov(b, "fov", 56),
+ fps(b, "fps", 0),
+ camera_idx(b, "camera-index", 0),
+ resolution(b, "resolution", 0)
+ {}
+};
+
class Tracker : public QObject, public ITracker
{
Q_OBJECT
@@ -26,12 +46,9 @@ public:
virtual ~Tracker();
void StartTracker(QFrame* frame);
void GetHeadPoseData(double *data);
- pbundle b;
- value<bool> enableTX, enableTY, enableTZ, enableRX, enableRY, enableRZ;
- value<double> fov;
- value<int> fps, camera_idx, resolution;
void load_settings(ht_config_t* config);
private:
+ settings s;
PortableLockedShm lck_shm;
ht_shm_t* shm;
QProcess subprocess;
@@ -51,10 +68,7 @@ public:
private:
Ui::Form ui;
- pbundle b;
- value<bool> enableTX, enableTY, enableTZ, enableRX, enableRY, enableRZ;
- value<double> fov;
- value<int> fps, camera_idx, resolution;
+ settings s;
private slots:
void doOK();