From c681889ab4c37bfd0f049177459b7fda380fda51 Mon Sep 17 00:00:00 2001 From: Wim Vriend Date: Wed, 2 Jan 2013 18:54:06 +0000 Subject: Added 'enable axis' parameters to the Trackers. Added 'none' to filter-listbox. git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@203 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb --- FTNoIR_Tracker_PT/FTNoIR_PT_Controls.ui | 186 ++++++++++++++++++++++- FTNoIR_Tracker_PT/FTNoIR_Tracker_PT_vc8.vcproj | 12 +- FTNoIR_Tracker_PT/FTNoIR_Tracker_PT_vc9.vcproj | 2 +- FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp | 38 ++++- FTNoIR_Tracker_PT/ftnoir_tracker_pt.h | 7 + FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.cpp | 20 ++- FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.h | 7 + FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.cpp | 16 +- FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.h | 7 + 9 files changed, 275 insertions(+), 20 deletions(-) (limited to 'FTNoIR_Tracker_PT') diff --git a/FTNoIR_Tracker_PT/FTNoIR_PT_Controls.ui b/FTNoIR_Tracker_PT/FTNoIR_PT_Controls.ui index 9c70b397..20e16985 100644 --- a/FTNoIR_Tracker_PT/FTNoIR_PT_Controls.ui +++ b/FTNoIR_Tracker_PT/FTNoIR_PT_Controls.ui @@ -9,8 +9,8 @@ 0 0 - 401 - 497 + 393 + 585 @@ -432,6 +432,188 @@ + + + + + 0 + 85 + + + + Enable Axis + + + + + 10 + 20 + 143 + 60 + + + + + + + Roll: + + + + + + + Pitch: + + + + + + + Yaw: + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + X: + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + Y: + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + Z: + + + + + + + + 20 + 16777215 + + + + Qt::LeftToRight + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + diff --git a/FTNoIR_Tracker_PT/FTNoIR_Tracker_PT_vc8.vcproj b/FTNoIR_Tracker_PT/FTNoIR_Tracker_PT_vc8.vcproj index 7d698af7..5b70b459 100644 --- a/FTNoIR_Tracker_PT/FTNoIR_Tracker_PT_vc8.vcproj +++ b/FTNoIR_Tracker_PT/FTNoIR_Tracker_PT_vc8.vcproj @@ -1,7 +1,7 @@ @@ -268,7 +268,7 @@ @@ -314,7 +314,7 @@ @@ -545,7 +545,7 @@ /> x = t[0] / 10.0; // convert to cm - data->y = t[1] / 10.0; - data->z = t[2] / 10.0; + // get translation(s) + if (bEnableX) { + data->x = t[0] / 10.0; // convert to cm + } - // translate rotatation matrix from opengl (G) to roll-pitch-yaw (R) frame + if (bEnableY) { + data->y = t[1] / 10.0; + } + if (bEnableZ) { + data->z = t[2] / 10.0; + } + + // translate rotation matrix from opengl (G) to roll-pitch-yaw (R) frame // -z -> x, y -> z, x -> -y Matx33f R_RG( 0, 0,-1, -1, 0, 0, @@ -208,9 +224,15 @@ bool Tracker::GiveHeadPoseData(THeadPoseData *data) alpha = atan2( R(1,0), R(0,0)); gamma = atan2( R(2,1), R(2,2)); - data->yaw = rad2deg * alpha; - data->pitch = -rad2deg * beta; // this is what ftnoir expects? - data->roll = rad2deg * gamma; + if (bEnableYaw) { + data->yaw = rad2deg * alpha; + } + if (bEnablePitch) { + data->pitch = -rad2deg * beta; // this is what ftnoir expects? + } + if (bEnableRoll) { + data->roll = rad2deg * gamma; + } } return true; } diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h index bfc262b3..c381b807 100644 --- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h +++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h @@ -33,6 +33,7 @@ public: void StartTracker(HWND parent_window); void StopTracker(bool exit); bool GiveHeadPoseData(THeadPoseData *data); + void refreshVideo(); void apply(const TrackerSettings& settings); @@ -64,6 +65,12 @@ protected: cv::Vec3f t_MH; bool draw_frame; int sleep_time; + bool bEnableRoll; + bool bEnablePitch; + bool bEnableYaw; + bool bEnableX; + bool bEnableY; + bool bEnableZ; long frame_count; diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.cpp b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.cpp index 357cd67f..f3daae0c 100644 --- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.cpp +++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.cpp @@ -32,6 +32,14 @@ TrackerDialog::TrackerDialog() ui.res_y_spin->setValue(settings.cam_res_y); ui.fps_spin->setValue(settings.cam_fps); ui.threshold_slider->setValue(settings.threshold); + + ui.chkEnableRoll->setChecked(settings.bEnableRoll); + ui.chkEnablePitch->setChecked(settings.bEnablePitch); + ui.chkEnableYaw->setChecked(settings.bEnableYaw); + ui.chkEnableX->setChecked(settings.bEnableX); + ui.chkEnableY->setChecked(settings.bEnableY); + ui.chkEnableZ->setChecked(settings.bEnableZ); + ui.mindiam_spin->setValue(settings.min_point_size); ui.maxdiam_spin->setValue(settings.max_point_size); ui.model_tabs->setCurrentIndex(dialog_settings.active_model_panel); @@ -62,6 +70,14 @@ TrackerDialog::TrackerDialog() connect( ui.res_y_spin,SIGNAL(valueChanged(int)), this,SLOT(set_cam_res_y(int)) ); connect( ui.fps_spin,SIGNAL(valueChanged(int)), this,SLOT(set_cam_fps(int)) ); connect( ui.threshold_slider,SIGNAL(sliderMoved(int)), this,SLOT(set_threshold(int)) ); + + connect( ui.chkEnableRoll,SIGNAL(toggled(bool)), this,SLOT(set_ena_roll(bool)) ); + connect( ui.chkEnablePitch,SIGNAL(toggled(bool)), this,SLOT(set_ena_pitch(bool)) ); + connect( ui.chkEnableYaw,SIGNAL(toggled(bool)), this,SLOT(set_ena_yaw(bool)) ); + connect( ui.chkEnableX,SIGNAL(toggled(bool)), this,SLOT(set_ena_x(bool)) ); + connect( ui.chkEnableY,SIGNAL(toggled(bool)), this,SLOT(set_ena_y(bool)) ); + connect( ui.chkEnableZ,SIGNAL(toggled(bool)), this,SLOT(set_ena_z(bool)) ); + connect( ui.mindiam_spin,SIGNAL(valueChanged(int)), this,SLOT(set_min_point_size(int)) ); connect( ui.maxdiam_spin,SIGNAL(valueChanged(int)), this,SLOT(set_max_point_size(int)) ); connect( ui.model_tabs,SIGNAL(currentChanged(int)), this,SLOT(set_model(int)) ); @@ -282,7 +298,7 @@ void TrackerDialog::Initialize(QWidget *parent) void TrackerDialog::registerTracker(ITracker *t) { - qDebug()<<"TrackerDialog:: Tracker registerd"; + qDebug()<<"TrackerDialog:: Tracker registered"; tracker = static_cast(t); if (isVisible() && settings_dirty) tracker->apply(settings); ui.tcalib_button->setEnabled(true); @@ -292,7 +308,7 @@ void TrackerDialog::registerTracker(ITracker *t) void TrackerDialog::unRegisterTracker() { - qDebug()<<"TrackerDialog:: Tracker un-registerd"; + qDebug()<<"TrackerDialog:: Tracker un-registered"; tracker = NULL; ui.tcalib_button->setEnabled(false); ui.center_button->setEnabled(false); diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.h b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.h index 68baf87a..19404444 100644 --- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.h +++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_dialog.h @@ -44,6 +44,13 @@ protected slots: void set_min_point_size(int val) { settings.min_point_size = val; settings_changed(); } void set_max_point_size(int val) { settings.max_point_size = val; settings_changed(); } void set_threshold(int val) { settings.threshold = val; settings_changed(); } + void set_ena_roll(bool val) { settings.bEnableRoll = val; settings_changed(); } + void set_ena_pitch(bool val) { settings.bEnablePitch = val; settings_changed(); } + void set_ena_yaw(bool val) { settings.bEnableYaw = val; settings_changed(); } + void set_ena_x(bool val) { settings.bEnableX = val; settings_changed(); } + void set_ena_y(bool val) { settings.bEnableY = val; settings_changed(); } + void set_ena_z(bool val) { settings.bEnableZ = val; settings_changed(); } + void set_clip_t_height(int val) { dialog_settings.clip_ty = val; set_clip(); } void set_clip_t_length(int val) { dialog_settings.clip_tz = val; set_clip(); } void set_clip_b_height(int val) { dialog_settings.clip_by = val; set_clip(); } diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.cpp b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.cpp index 036b0558..7c356694 100644 --- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.cpp +++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.cpp @@ -40,7 +40,14 @@ void TrackerSettings::load_ini() video_widget = iniFile.value("VideoWidget", true).toBool(); sleep_time = iniFile.value("SleepTime", 10).toInt(); reset_time = iniFile.value("ResetTime", 1000).toInt(); - + + bEnableRoll = iniFile.value ( "EnableRoll", 1 ).toBool(); + bEnablePitch = iniFile.value ( "EnablePitch", 1 ).toBool(); + bEnableYaw = iniFile.value ( "EnableYaw", 1 ).toBool(); + bEnableX = iniFile.value ( "EnableX", 1 ).toBool(); + bEnableY = iniFile.value ( "EnableY", 1 ).toBool(); + bEnableZ = iniFile.value ( "EnableZ", 1 ).toBool(); + iniFile.endGroup(); } @@ -75,6 +82,13 @@ void TrackerSettings::save_ini() const iniFile.setValue("SleepTime", sleep_time); iniFile.setValue("ResetTime", reset_time); + iniFile.setValue ( "EnableRoll", bEnableRoll ); + iniFile.setValue ( "EnablePitch", bEnablePitch ); + iniFile.setValue ( "EnableYaw", bEnableYaw ); + iniFile.setValue ( "EnableX", bEnableX ); + iniFile.setValue ( "EnableY", bEnableY ); + iniFile.setValue ( "EnableZ", bEnableZ ); + iniFile.endGroup(); } diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.h b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.h index 23496d91..16ee20f3 100644 --- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.h +++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt_settings.h @@ -31,6 +31,13 @@ struct TrackerSettings cv::Vec3f M01; cv::Vec3f M02; + bool bEnableRoll; + bool bEnablePitch; + bool bEnableYaw; + bool bEnableX; + bool bEnableY; + bool bEnableZ; + // head to model translation cv::Vec3f t_MH; -- cgit v1.2.3