summaryrefslogtreecommitdiffhomepage
path: root/tracker-easy/tracker-easy-dialog.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@tehran.lain.pl>2019-04-28 21:12:48 +0000
committerGitHub <noreply@github.com>2019-04-28 21:12:48 +0000
commit00a1a3d81b82a411cd8cbdf5a480c4007b2b60bc (patch)
treee559543b174d7e84fac3a073c9dc55761ccb80c3 /tracker-easy/tracker-easy-dialog.cpp
parentfba47374dcbb12ffb168e2b2563d25b8e00b1d45 (diff)
parent5b3d825f1eace207502371427e15d8b54a237f83 (diff)
Merge pull request #937 from opentrack/easy-tracker-more-models
Easy tracker more models
Diffstat (limited to 'tracker-easy/tracker-easy-dialog.cpp')
-rw-r--r--tracker-easy/tracker-easy-dialog.cpp164
1 files changed, 51 insertions, 113 deletions
diff --git a/tracker-easy/tracker-easy-dialog.cpp b/tracker-easy/tracker-easy-dialog.cpp
index 411639d5..4a49e194 100644
--- a/tracker-easy/tracker-easy-dialog.cpp
+++ b/tracker-easy/tracker-easy-dialog.cpp
@@ -26,9 +26,7 @@ namespace EasyTracker
Dialog::Dialog() :
s(KModuleName),
- tracker(nullptr),
- timer(this),
- trans_calib(1, 2)
+ tracker(nullptr)
{
init_resources();
@@ -42,39 +40,41 @@ namespace EasyTracker
tie_setting(s.cam_res_y, ui.res_y_spin);
tie_setting(s.cam_fps, ui.fps_spin);
- tie_setting(s.min_point_size, ui.mindiam_spin);
- tie_setting(s.max_point_size, ui.maxdiam_spin);
+ tie_setting(s.iMinBlobSize, ui.mindiam_spin);
+ tie_setting(s.iMaxBlobSize, ui.maxdiam_spin);
tie_setting(s.DeadzoneRectHalfEdgeSize, ui.spinDeadzone);
- tie_setting(s.clip_by, ui.clip_bheight_spin);
- tie_setting(s.clip_bz, ui.clip_blength_spin);
- tie_setting(s.clip_ty, ui.clip_theight_spin);
- tie_setting(s.clip_tz, ui.clip_tlength_spin);
+ tie_setting(s.iVertexTopX, ui.iSpinVertexTopX);
+ tie_setting(s.iVertexTopY, ui.iSpinVertexTopY);
+ tie_setting(s.iVertexTopZ, ui.iSpinVertexTopZ);
- tie_setting(s.cap_x, ui.cap_width_spin);
- tie_setting(s.cap_y, ui.cap_height_spin);
- tie_setting(s.cap_z, ui.cap_length_spin);
+ tie_setting(s.iVertexRightX, ui.iSpinVertexRightX);
+ tie_setting(s.iVertexRightY, ui.iSpinVertexRightY);
+ tie_setting(s.iVertexRightZ, ui.iSpinVertexRightZ);
- tie_setting(s.m01_x, ui.m1x_spin);
- tie_setting(s.m01_y, ui.m1y_spin);
- tie_setting(s.m01_z, ui.m1z_spin);
+ tie_setting(s.iVertexLeftX, ui.iSpinVertexLeftX);
+ tie_setting(s.iVertexLeftY, ui.iSpinVertexLeftY);
+ tie_setting(s.iVertexLeftZ, ui.iSpinVertexLeftZ);
- tie_setting(s.m02_x, ui.m2x_spin);
- tie_setting(s.m02_y, ui.m2y_spin);
- tie_setting(s.m02_z, ui.m2z_spin);
+ tie_setting(s.iVertexCenterX, ui.iSpinVertexCenterX);
+ tie_setting(s.iVertexCenterY, ui.iSpinVertexCenterY);
+ tie_setting(s.iVertexCenterZ, ui.iSpinVertexCenterZ);
- tie_setting(s.t_MH_x, ui.tx_spin);
- tie_setting(s.t_MH_y, ui.ty_spin);
- tie_setting(s.t_MH_z, ui.tz_spin);
+ tie_setting(s.iVertexTopRightX, ui.iSpinVertexTopRightX);
+ tie_setting(s.iVertexTopRightY, ui.iSpinVertexTopRightY);
+ tie_setting(s.iVertexTopRightZ, ui.iSpinVertexTopRightZ);
- tie_setting(s.fov, ui.fov);
+ tie_setting(s.iVertexTopLeftX, ui.iSpinVertexTopLeftX);
+ tie_setting(s.iVertexTopLeftY, ui.iSpinVertexTopLeftY);
+ tie_setting(s.iVertexTopLeftZ, ui.iSpinVertexTopLeftZ);
- tie_setting(s.active_model_panel, ui.model_tabs);
+ tie_setting(s.fov, ui.fov);
tie_setting(s.debug, ui.debug);
+ tie_setting(s.iAutoCenter, ui.iCheckBoxAutoCenter);
+ tie_setting(s.iAutoCenterTimeout, ui.iSpinBoxAutoCenterTimeout);
- connect(ui.tcalib_button, SIGNAL(toggled(bool)), this, SLOT(startstop_trans_calib(bool)));
connect(ui.buttonBox, SIGNAL(accepted()), this, SLOT(doOK()));
connect(ui.buttonBox, SIGNAL(rejected()), this, SLOT(doCancel()));
@@ -83,102 +83,51 @@ namespace EasyTracker
set_camera_settings_available(ui.camdevice_combo->currentText());
connect(ui.camera_settings, &QPushButton::clicked, this, &Dialog::show_camera_settings);
- connect(&timer, &QTimer::timeout, this, &Dialog::poll_tracker_info_impl);
- timer.setInterval(250);
-
- connect(&calib_timer, &QTimer::timeout, this, &Dialog::trans_calib_step);
- calib_timer.setInterval(35);
+ // Radio Button
+ connect(ui.iRadioButtonCustomModelThree, &QRadioButton::clicked, this, &Dialog::UpdateCustomModelControls);
+ connect(ui.iRadioButtonCustomModelFour, &QRadioButton::clicked, this, &Dialog::UpdateCustomModelControls);
+ connect(ui.iRadioButtonCustomModelFive, &QRadioButton::clicked, this, &Dialog::UpdateCustomModelControls);
- poll_tracker_info_impl();
-
- connect(this, &Dialog::poll_tracker_info, this, &Dialog::poll_tracker_info_impl, Qt::DirectConnection);
+ tie_setting(s.iCustomModelThree, ui.iRadioButtonCustomModelThree);
+ tie_setting(s.iCustomModelFour, ui.iRadioButtonCustomModelFour);
+ tie_setting(s.iCustomModelFive, ui.iRadioButtonCustomModelFive);
for (unsigned k = 0; k < cv::SOLVEPNP_MAX_COUNT; k++)
+ {
ui.comboBoxSolvers->setItemData(k, k);
+ }
+
tie_setting(s.PnpSolver, ui.comboBoxSolvers);
+ UpdateCustomModelControls();
}
-
- void Dialog::startstop_trans_calib(bool start)
+ void Dialog::UpdateCustomModelControls()
{
- QMutexLocker l(&calibrator_mutex);
-
- if (start)
- {
- qDebug() << "pt: starting translation calibration";
- calib_timer.start();
- trans_calib.reset();
- s.t_MH_x = 0;
- s.t_MH_y = 0;
- s.t_MH_z = 0;
-
- ui.sample_count_display->setText(QString());
- }
- else
+ if (ui.iRadioButtonCustomModelThree->isChecked())
{
- calib_timer.stop();
- qDebug() << "pt: stopping translation calibration";
- {
- auto[tmp, nsamples] = trans_calib.get_estimate();
- s.t_MH_x = int(tmp[0]);
- s.t_MH_y = int(tmp[1]);
- s.t_MH_z = int(tmp[2]);
-
- constexpr int min_yaw_samples = 15;
- constexpr int min_pitch_samples = 15;
- constexpr int min_samples = min_yaw_samples + min_pitch_samples;
-
- // Don't bother counting roll samples. Roll calibration is hard enough
- // that it's a hidden unsupported feature anyway.
-
- QString sample_feedback;
- if (nsamples[0] < min_yaw_samples)
- sample_feedback = tr("%1 yaw samples. Yaw more to %2 samples for stable calibration.").arg(nsamples[0]).arg(min_yaw_samples);
- else if (nsamples[1] < min_pitch_samples)
- sample_feedback = tr("%1 pitch samples. Pitch more to %2 samples for stable calibration.").arg(nsamples[1]).arg(min_pitch_samples);
- else
- {
- const int nsamples_total = nsamples[0] + nsamples[1];
- sample_feedback = tr("%1 samples. Over %2, good!").arg(nsamples_total).arg(min_samples);
- }
-
- ui.sample_count_display->setText(sample_feedback);
- }
+ ui.iGroupBoxCenter->hide();
+ ui.iGroupBoxTopRight->hide();
+ ui.iGroupBoxTopLeft->hide();
}
- ui.tx_spin->setEnabled(!start);
- ui.ty_spin->setEnabled(!start);
- ui.tz_spin->setEnabled(!start);
-
- if (start)
- ui.tcalib_button->setText(tr("Stop calibration"));
- else
- ui.tcalib_button->setText(tr("Start calibration"));
- }
-
- void Dialog::poll_tracker_info_impl()
- {
- //SL: sort this out
- /*
- pt_camera_info info;
- if (tracker && tracker->get_cam_info(info))
+ else if (ui.iRadioButtonCustomModelFour->isChecked())
{
- ui.caminfo_label->setText(tr("%1x%2 @ %3 FPS").arg(info.res_x).arg(info.res_y).arg(iround(info.fps)));
-
- // display point info
- const int n_points = tracker->get_n_points();
- ui.pointinfo_label->setText((n_points == 3 ? tr("%1 OK!") : tr("%1 BAD!")).arg(n_points));
+ ui.iGroupBoxCenter->show();
+ ui.iGroupBoxTopRight->hide();
+ ui.iGroupBoxTopLeft->hide();
}
- else
- */
+ else if (ui.iRadioButtonCustomModelFive->isChecked())
{
- ui.caminfo_label->setText(tr("Tracker offline"));
- ui.pointinfo_label->setText(QString());
+ ui.iGroupBoxCenter->hide();
+ ui.iGroupBoxTopRight->show();
+ ui.iGroupBoxTopLeft->show();
}
+
}
+
void Dialog::set_camera_settings_available(const QString& /* camera_name */)
{
ui.camera_settings->setEnabled(true);
@@ -195,12 +144,7 @@ namespace EasyTracker
(void)video::show_dialog(s.camera_name);
}
- void Dialog::trans_calib_step()
- {
- QMutexLocker l(&calibrator_mutex);
- // TODO: Do we still need that function
- }
-
+
void Dialog::save()
{
s.b->save();
@@ -220,16 +164,10 @@ namespace EasyTracker
void Dialog::register_tracker(ITracker *t)
{
tracker = static_cast<Tracker*>(t);
- ui.tcalib_button->setEnabled(true);
- poll_tracker_info();
- timer.start();
}
void Dialog::unregister_tracker()
{
tracker = nullptr;
- ui.tcalib_button->setEnabled(false);
- poll_tracker_info();
- timer.stop();
}
}