From 5c2f5449e8eb8a3c6d564a16fc8e307996746c14 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 9 Apr 2013 11:29:36 +0200 Subject: Fix SimConnect (thanks Wim) --- CMakeLists.txt | 4 ++- ftnoir_protocol_sc/ftnoir_protocol_sc.cpp | 34 +++++++++++++++++------- ftnoir_protocol_sc/ftnoir_protocol_sc_dialog.cpp | 2 +- ftnoir_protocol_sc/ftnoir_protocol_sc_dll.cpp | 2 +- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54bb79fd..5c41f652 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -203,7 +203,6 @@ if(NOT SDK_FACEAPI_ONLY) QT4_WRAP_UI(ftnoir-proto-win32-mouse-uih ${ftnoir-proto-win32-mouse-ui}) QT4_ADD_RESOURCES(ftnoir-proto-win32-mouse-rcc ${ftnoir-proto-win32-mouse-rc}) -# TODO manifest problems :( file(GLOB ftnoir-proto-simconnect-c "ftnoir_protocol_sc/*.cpp") file(GLOB ftnoir-proto-simconnect-h "ftnoir_protocol_sc/*.h") QT4_WRAP_CPP(ftnoir-proto-simconnect-moc ${ftnoir-proto-simconnect-h}) @@ -344,6 +343,9 @@ endif() if(SDK_FSUIPC) add_library(ftnoir-proto-fsuipc SHARED ${ftnoir-proto-fsuipc-c} ${ftnoir-proto-fsuipc-moc} ${ftnoir-proto-fsuipc-uih} ${ftnoir-proto-fsuipc-rcc}) target_link_libraries(ftnoir-proto-fsuipc ${MY_QT_LIBS} "${SDK_FSUIPC}/FSUIPC_User.lib") + if(MSVC) + set_target_properties(ftnoir-proto-fsuipc PROPERTIES LINK_FLAGS "/NODEFAULTLIB:libc") + endif() endif() if(SDK_SIMCONNECT) diff --git a/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp b/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp index c01096bf..90ca3dba 100644 --- a/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp +++ b/ftnoir_protocol_sc/ftnoir_protocol_sc.cpp @@ -153,13 +153,13 @@ PDWORD_PTR MsgResult = 0; // bool FTNoIR_Protocol::checkServerInstallationOK() { - QString aFileName; // File Path and Name - - // Code to activate the context for the SimConnect DLL - ACTCTX act = { 0 }; + // Code to activate the context for the SimConnect DLL + ACTCTXA act; HANDLE hctx; ULONG_PTR ulCookie; + memset(&act, 0, sizeof(act)); + qDebug() << "SCCheckClientDLL says: Starting Function"; try { @@ -167,8 +167,9 @@ bool FTNoIR_Protocol::checkServerInstallationOK() act.cbSize = sizeof(act); act.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID; char full_path[2048]; - strcpy(full_path, QCoreApplication::applicationDirPath().toLatin1().constData()); - strcat(full_path, "\\libftnoir-proto-simconnect.dll"); + QByteArray foo = QCoreApplication::applicationDirPath().toLatin1(); + strcpy(full_path, foo.constData()); + strcat(full_path, "/ftnoir-proto-simconnect.dll"); act.lpSource = full_path; act.lpResourceName = MAKEINTRESOURCEA(101); @@ -199,10 +200,23 @@ bool FTNoIR_Protocol::checkServerInstallationOK() return false; } - SCClientLib.setFileName(SC_CLIENT_FILENAME); - if (SCClientLib.load() != true) { - qDebug() << "SCCheckClientDLL says: Error loading SimConnect DLL"; - return false; + const char* simconnect_paths[] = { + "SimConnect.DLL", + "C:\\Windows\\WinSxS\\x86_microsoft.flightsimulator.simconnect_67c7c14424d61b5b_10.0.60905.0_none_dd92b94d8a196297\\SimConnect.DLL", + "C:\\Windows\\WinSxS\\x86_microsoft.flightsimulator.simconnect_67c7c14424d61b5b_10.0.61242.0_none_e079b46b85043c20\\SimConnect.DLL", + "C:\\Windows\\WinSxS\\x86_microsoft.flightsimulator.simconnect_67c7c14424d61b5b_10.0.61259.0_none_55f5ecdc14f60568\\SimConnect.DLL", + NULL + }; + + for (int i = 0; simconnect_paths[i]; i++) + { + SCClientLib.setFileName(simconnect_paths[i]); + if (!SCClientLib.load()) { + qDebug() << "SCCheckClientDLL says: Error loading SimConnect DLL"; + qDebug() << SCClientLib.errorString(); + continue; + } + break; } // diff --git a/ftnoir_protocol_sc/ftnoir_protocol_sc_dialog.cpp b/ftnoir_protocol_sc/ftnoir_protocol_sc_dialog.cpp index 32abf64a..ef9dd924 100644 --- a/ftnoir_protocol_sc/ftnoir_protocol_sc_dialog.cpp +++ b/ftnoir_protocol_sc/ftnoir_protocol_sc_dialog.cpp @@ -150,7 +150,7 @@ void SCControls::save() { // GetProtocolDialog - Undecorated name, which can be easily used with GetProcAddress // Win32 API function. // _GetProtocolDialog@0 - Common name decoration for __stdcall functions in C language. -#pragma comment(linker, "/export:GetProtocolDialog=_GetProtocolDialog@0") +//#pragma comment(linker, "/export:GetProtocolDialog=_GetProtocolDialog@0") extern "C" FTNOIR_PROTOCOL_BASE_EXPORT void* CALLING_CONVENTION GetDialog( ) { diff --git a/ftnoir_protocol_sc/ftnoir_protocol_sc_dll.cpp b/ftnoir_protocol_sc/ftnoir_protocol_sc_dll.cpp index 3d59ef48..72d63c5e 100644 --- a/ftnoir_protocol_sc/ftnoir_protocol_sc_dll.cpp +++ b/ftnoir_protocol_sc/ftnoir_protocol_sc_dll.cpp @@ -49,7 +49,7 @@ FTNoIR_ProtocolDll::~FTNoIR_ProtocolDll() // GetProtocolDll - Undecorated name, which can be easily used with GetProcAddress // Win32 API function. // _GetProtocolDll@0 - Common name decoration for __stdcall functions in C language. -#pragma comment(linker, "/export:GetProtocolDll=_GetProtocolDll@0") +//#pragma comment(linker, "/export:GetProtocolDll=_GetProtocolDll@0") extern "C" FTNOIR_PROTOCOL_BASE_EXPORT Metadata* CALLING_CONVENTION GetMetadata() { -- cgit v1.2.3 From e52e28acc24242f87703d2ff825cfd719918e33c Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 9 Apr 2013 11:29:44 +0200 Subject: New HT --- bin/tracker-ht/headtracker-ftnoir.exe | Bin 4486144 -> 4485632 bytes ftnoir_tracker_ht/ftnoir_tracker_ht.cpp | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/tracker-ht/headtracker-ftnoir.exe b/bin/tracker-ht/headtracker-ftnoir.exe index 4ed54a58..a7e20dec 100644 Binary files a/bin/tracker-ht/headtracker-ftnoir.exe and b/bin/tracker-ht/headtracker-ftnoir.exe differ diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp index c5e860ee..f91cb555 100644 --- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp +++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp @@ -109,18 +109,18 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->field_of_view = iniFile.value("fov", 52).toFloat(); config->pyrlk_pyramids = 3; config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21; - config->max_keypoints = 100; - config->keypoint_quality = 7; + config->max_keypoints = 150; + config->keypoint_quality = 2; config->keypoint_distance = 1.5; - config->keypoint_3distance = 5.0; + config->keypoint_3distance = 5.5; //config->force_width = 640; //config->force_height = 480; config->force_fps = iniFile.value("fps", 0).toInt(); config->camera_index = iniFile.value("camera-index", -1).toInt(); config->ransac_num_iters = 100; - config->ransac_max_reprojection_error = 3.75; - config->ransac_max_inlier_error = 3.8; - config->ransac_max_mean_error = 4; + config->ransac_max_reprojection_error = 3.7; + config->ransac_max_inlier_error = 4; + config->ransac_max_mean_error = 3.6; config->ransac_abs_max_mean_error = 10; config->debug = 0; config->ransac_min_features = 0.85; -- cgit v1.2.3 From 002f3345e9ac8c1364f9f16efe0a1995e6d151a1 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 00:56:59 +0200 Subject: new coefficients for fixed HT --- bin/tracker-ht/headtracker-ftnoir.exe | Bin 4485632 -> 4487168 bytes ftnoir_tracker_ht/ftnoir_tracker_ht.cpp | 14 +++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/tracker-ht/headtracker-ftnoir.exe b/bin/tracker-ht/headtracker-ftnoir.exe index a7e20dec..f69b48b5 100644 Binary files a/bin/tracker-ht/headtracker-ftnoir.exe and b/bin/tracker-ht/headtracker-ftnoir.exe differ diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp index f91cb555..a6623619 100644 --- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp +++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp @@ -109,19 +109,19 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->field_of_view = iniFile.value("fov", 52).toFloat(); config->pyrlk_pyramids = 3; config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21; - config->max_keypoints = 150; - config->keypoint_quality = 2; + config->max_keypoints = 100; + config->keypoint_quality = 5; config->keypoint_distance = 1.5; - config->keypoint_3distance = 5.5; + config->keypoint_3distance = 7; //config->force_width = 640; //config->force_height = 480; config->force_fps = iniFile.value("fps", 0).toInt(); config->camera_index = iniFile.value("camera-index", -1).toInt(); config->ransac_num_iters = 100; - config->ransac_max_reprojection_error = 3.7; - config->ransac_max_inlier_error = 4; - config->ransac_max_mean_error = 3.6; - config->ransac_abs_max_mean_error = 10; + config->ransac_max_reprojection_error = 3.9; + config->ransac_max_inlier_error = 3.8; + config->ransac_max_mean_error = 3.7; + config->ransac_abs_max_mean_error = 9; config->debug = 0; config->ransac_min_features = 0.85; int res = iniFile.value("resolution", 0).toInt(); -- cgit v1.2.3 From 4c0a25afd17900a21f9d9b62508cba7f821422f3 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 03:12:08 +0200 Subject: Externalize classification delay in milliseconds --- bin/tracker-ht/headtracker-ftnoir.exe | Bin 4487168 -> 4482560 bytes ftnoir_tracker_ht/ftnoir_tracker_ht.cpp | 29 +-- ftnoir_tracker_ht/ht-api.h | 1 + ftnoir_tracker_ht/ht-trackercontrols.ui | 308 +------------------------------- 4 files changed, 25 insertions(+), 313 deletions(-) diff --git a/bin/tracker-ht/headtracker-ftnoir.exe b/bin/tracker-ht/headtracker-ftnoir.exe index f69b48b5..c1d9d3a7 100644 Binary files a/bin/tracker-ht/headtracker-ftnoir.exe and b/bin/tracker-ht/headtracker-ftnoir.exe differ diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp index a6623619..4ea8180c 100644 --- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp +++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp @@ -109,28 +109,30 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->field_of_view = iniFile.value("fov", 52).toFloat(); config->pyrlk_pyramids = 3; config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21; - config->max_keypoints = 100; - config->keypoint_quality = 5; - config->keypoint_distance = 1.5; - config->keypoint_3distance = 7; + config->max_keypoints = 200; + config->keypoint_quality = 11; + config->keypoint_distance = 1; + config->keypoint_3distance = 4; //config->force_width = 640; //config->force_height = 480; config->force_fps = iniFile.value("fps", 0).toInt(); config->camera_index = iniFile.value("camera-index", -1).toInt(); config->ransac_num_iters = 100; - config->ransac_max_reprojection_error = 3.9; - config->ransac_max_inlier_error = 3.8; - config->ransac_max_mean_error = 3.7; + config->ransac_max_reprojection_error = 3.1; + config->ransac_max_inlier_error = 3.6; + config->ransac_max_mean_error = 3.8; config->ransac_abs_max_mean_error = 9; - config->debug = 0; - config->ransac_min_features = 0.85; + config->debug = 1; + config->ransac_min_features = 0.82; int res = iniFile.value("resolution", 0).toInt(); if (res < 0 || res >= (int)(sizeof(*resolution_choices) / sizeof(resolution_tuple))) res = 0; resolution_tuple r = resolution_choices[res]; config->force_width = r.width; config->force_height = r.height; - config->user_landmarks = iniFile.value("use-bashed-coords").toBool(); + config->user_landmarks = false; //iniFile.value("use-bashed-coords").toBool(); + config->flandmark_delay = 200; +#if 0 if (config->user_landmarks) { config->user_landmark_locations[0][0] = iniFile.value("b1").toDouble(); @@ -146,6 +148,7 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->user_landmark_locations[1][3] = iniFile.value("b11").toDouble(); config->user_landmark_locations[2][3] = iniFile.value("b12").toDouble(); } +#endif qDebug() << "width" << r.width << "height" << r.height; if (tracker) { @@ -330,7 +333,7 @@ TrackerControls::TrackerControls() connect(ui.tz, SIGNAL(stateChanged(int)), this, SLOT(settingChanged(int))); connect(ui.buttonCancel, SIGNAL(clicked()), this, SLOT(doCancel())); connect(ui.buttonOK, SIGNAL(clicked()), this, SLOT(doOK())); - connect(ui.buttonSettings, SIGNAL(clicked()), this, SLOT(cameraSettings())); + //connect(ui.buttonSettings, SIGNAL(clicked()), this, SLOT(cameraSettings())); loadSettings(); settingsDirty = false; } @@ -386,6 +389,7 @@ void TrackerControls::loadSettings() ui.ty->setCheckState(iniFile.value("enable-ty", true).toBool() ? Qt::Checked : Qt::Unchecked); ui.tz->setCheckState(iniFile.value("enable-tz", true).toBool() ? Qt::Checked : Qt::Unchecked); ui.resolution->setCurrentIndex(iniFile.value("resolution", 0).toInt()); +#if 0 ui.groupBox_2->setChecked(iniFile.value("use-bashed-coords").toBool()); ui.doubleSpinBox_1->setValue(iniFile.value("b1", 0).toDouble()); ui.doubleSpinBox_2->setValue(iniFile.value("b2", 0).toDouble()); @@ -399,6 +403,7 @@ void TrackerControls::loadSettings() ui.doubleSpinBox_10->setValue(iniFile.value("b10", 0).toDouble()); ui.doubleSpinBox_11->setValue(iniFile.value("b11", 0).toDouble()); ui.doubleSpinBox_12->setValue(iniFile.value("b12", 0).toDouble()); +#endif iniFile.endGroup(); settingsDirty = false; } @@ -437,6 +442,7 @@ void TrackerControls::save() iniFile.setValue("enable-ty", ui.ty->checkState() != Qt::Unchecked ? true : false); iniFile.setValue("enable-tz", ui.tz->checkState() != Qt::Unchecked ? true : false); iniFile.setValue("resolution", ui.resolution->currentIndex()); +#if 0 iniFile.setValue("b1", ui.doubleSpinBox_1->value()); iniFile.setValue("b2", ui.doubleSpinBox_2->value()); iniFile.setValue("b3", ui.doubleSpinBox_3->value()); @@ -450,6 +456,7 @@ void TrackerControls::save() iniFile.setValue("b11", ui.doubleSpinBox_11->value()); iniFile.setValue("b12", ui.doubleSpinBox_12->value()); iniFile.setValue("use-bashed-coords", ui.groupBox_2->isChecked()); +#endif iniFile.endGroup(); settingsDirty = false; } diff --git a/ftnoir_tracker_ht/ht-api.h b/ftnoir_tracker_ht/ht-api.h index 81caf16f..c09dbf55 100644 --- a/ftnoir_tracker_ht/ht-api.h +++ b/ftnoir_tracker_ht/ht-api.h @@ -41,6 +41,7 @@ typedef struct ht_config { float ransac_abs_max_mean_error; bool user_landmarks; float user_landmark_locations[3][4]; + float flandmark_delay; } ht_config_t; typedef struct { diff --git a/ftnoir_tracker_ht/ht-trackercontrols.ui b/ftnoir_tracker_ht/ht-trackercontrols.ui index 968b7dc7..5f414fc2 100644 --- a/ftnoir_tracker_ht/ht-trackercontrols.ui +++ b/ftnoir_tracker_ht/ht-trackercontrols.ui @@ -9,8 +9,8 @@ 0 0 - 724 - 160 + 549 + 131 @@ -122,8 +122,8 @@ - 220 - 130 + 390 + 100 75 23 @@ -135,8 +135,8 @@ - 300 - 130 + 470 + 100 75 23 @@ -289,302 +289,6 @@ - - - - 500 - 10 - 221 - 141 - - - - Bashed coordinates - - - true - - - false - - - - - 10 - 20 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 80 - 20 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 150 - 20 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 150 - 50 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 10 - 50 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 80 - 50 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 150 - 80 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 10 - 80 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 80 - 80 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 150 - 110 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 80 - 110 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - 10 - 110 - 61 - 22 - - - - true - - - QAbstractSpinBox::NoButtons - - - 5 - - - -99.000000000000000 - - - - - - - 10 - 130 - 101 - 23 - - - - Camera settings - - -- cgit v1.2.3 From 272f8a515e10d1eaebbcea54ba65e01a2eced374 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:16:53 +0200 Subject: Fix Linux build --- cmake/FindQxt.cmake | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++ cmake/findqxt.cmake | 155 ---------------------------------------------------- 2 files changed, 155 insertions(+), 155 deletions(-) create mode 100644 cmake/FindQxt.cmake delete mode 100644 cmake/findqxt.cmake diff --git a/cmake/FindQxt.cmake b/cmake/FindQxt.cmake new file mode 100644 index 00000000..1ddfa0dd --- /dev/null +++ b/cmake/FindQxt.cmake @@ -0,0 +1,155 @@ +############# +## basic FindQxt.cmake +## This is an *EXTREMELY BASIC* cmake find/config file for +## those times you have a cmake project and wish to use +## libQxt. +## +## It should be noted that at the time of writing, that +## I (mschnee) have an extremely limited understanding of the +## way Find*.cmake files work, but I have attempted to +## emulate what FindQt4.cmake and a few others do. +## +## To enable a specific component, set your QXT_USE_${modname}: +## SET(QXT_USE_QXTCORE TRUE) +## SET(QXT_USE_QXTGUI FALSE) +## Currently available components: +## QxtCore, QxtGui, QxtNetwork, QxtWeb, QxtSql +## Auto-including directories are enabled with INCLUDE_DIRECTORIES(), but +## can be accessed if necessary via ${QXT_INCLUDE_DIRS} +## +## To add the libraries to your build, TARGET_LINK_LIBRARIES(), such as... +## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QXT_LIBRARIES}) +## ...or.. +## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QT_LIBRARIES} ${QXT_LIBRARIES}) +################### TODO: +## The purpose of this cmake file is to find what components +## exist, regardless of how libQxt was build or configured, thus +## it should search/find all possible options. As I am not aware +## that any module requires anything special to be used, adding all +## modules to ${QXT_MODULES} below should be sufficient. +## Eventually, there should be version numbers, but +## I am still too unfamiliar with cmake to determine how to do +## version checks and comparisons. +## At the moment, this cmake returns a failure if you +## try to use a component that doesn't exist. I don't know how to +## set up warnings. +## It would be nice having a FindQxt.cmake and a UseQxt.cmake +## file like done for Qt - one to check for everything in advance + +############## + +###### setup +SET(QXT_MODULES QxtGui QxtWeb QxtZeroConf QxtNetwork QxtSql QxtBerkeley QxtCore) +SET(QXT_FOUND_MODULES) +FOREACH(mod ${QXT_MODULES}) + STRING(TOUPPER ${mod} U_MOD) + SET(QXT_${U_MOD}_INCLUDE_DIR NOTFOUND) + SET(QXT_${U_MOD}_LIB_DEBUG NOTFOUND) + SET(QXT_${U_MOD}_LIB_RELEASE NOTFOUND) + SET(QXT_FOUND_${U_MOD} FALSE) +ENDFOREACH(mod) +SET(QXT_QXTGUI_DEPENDSON QxtCore) +SET(QXT_QXTWEB_DEPENDSON QxtCore QxtNetwork) +SET(QXT_QXTZEROCONF_DEPENDSON QxtCore QxtNetwork) +SET(QXT_QXTNETWORK_DEPENDSON QxtCore) +SET(QXT_QXTQSQL_DEPENDSON QxtCore) +SET(QXT_QXTBERKELEY_DEPENDSON QxtCore) + +FOREACH(mod ${QXT_MODULES}) + STRING(TOUPPER ${mod} U_MOD) + IF(NOT ${U_MOD}_INCLUDE_DIR) + FIND_PATH(QXT_${U_MOD}_INCLUDE_DIR NAME ${mod} + PATH_SUFFIXES ${mod} include/${mod} + qxt/include/${mod} include/qxt/${mod} + Qxt/include/${mod} include/Qxt/${mod} + PATHS + ~/Library/Frameworks/ + /Library/Frameworks/ + /sw/ + /usr/local/ + /usr + /opt/local/ + /opt/csw + /opt + "C:/Program Files/libqxt/include" + "C:/Program Files (x86)/libqxt/include" + NO_DEFAULT_PATH + ) + FIND_LIBRARY(QXT_${U_MOD}_LIB_RELEASE NAME ${mod} + PATH_SUFFIXES Qxt/lib64 Qxt/lib lib64 lib lib/${CMAKE_LIBRARY_ARCHITECTURE} + PATHS + /sw + /usr/local + /usr + /opt/local + /opt/csw + /opt + "C:/Program Files/libqxt" + "C:/Program Files (x86)/libqxt" + NO_DEFAULT_PATH + ) + FIND_LIBRARY(QXT_${U_MOD}_LIB_DEBUG NAME ${mod}d + PATH_SUFFIXES Qxt/lib64 Qxt/lib lib64 lib lib/${CMAKE_LIBRARY_ARCHITECTURE} + PATHS + /sw + /usr/local + /usr + /opt/local + /opt/csw + /opt + "C:/Program Files/libqxt/" + "C:/Program Files (x86)/libqxt/" + NO_DEFAULT_PATH + ) + IF (QXT_${U_MOD}_LIB_RELEASE) + SET(QXT_FOUND_MODULES "${QXT_FOUND_MODULES} ${mod}") + ENDIF (QXT_${U_MOD}_LIB_RELEASE) + + IF (QXT_${U_MOD}_LIB_DEBUG) + SET(QXT_FOUND_MODULES "${QXT_FOUND_MODULES} ${mod}") + ENDIF (QXT_${U_MOD}_LIB_DEBUG) + ENDIF() +ENDFOREACH(mod) + +FOREACH(mod ${QXT_MODULES}) + STRING(TOUPPER ${mod} U_MOD) + IF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE) + SET(QXT_FOUND_${U_MOD} TRUE) + ENDIF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE) +ENDFOREACH(mod) + + +##### find and include +# To use a Qxt Library.... +# SET(QXT_FIND_COMPONENTS QxtCore, QxtGui) +# ...and this will do the rest +IF( QXT_FIND_COMPONENTS ) + FOREACH( component ${QXT_FIND_COMPONENTS} ) + STRING( TOUPPER ${component} _COMPONENT ) + SET(QXT_USE_${_COMPONENT}_COMPONENT TRUE) + ENDFOREACH( component ) +ENDIF( QXT_FIND_COMPONENTS ) + +SET(QXT_LIBRARIES "") +SET(QXT_INCLUDE_DIRS "") + +# like FindQt4.cmake, in order of dependence +FOREACH( module ${QXT_MODULES} ) + STRING(TOUPPER ${module} U_MOD) + IF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD}) + IF(QXT_FOUND_${U_MOD}) + STRING(REPLACE "QXT" "" qxt_module_def "${U_MOD}") + ADD_DEFINITIONS(-DQXT_${qxt_module_def}_LIB) + SET(QXT_INCLUDE_DIRS ${QXT_INCLUDE_DIRS} ${QXT_${U_MOD}_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(${QXT_${U_MOD}_INCLUDE_DIR}) + SET(QXT_LIBRARIES ${QXT_LIBRARIES} ${QXT_${U_MOD}_LIB_RELEASE}) + ELSE(QXT_FOUND_${U_MOD}) + MESSAGE("Could not find Qxt Module ${module}") + RETURN() + ENDIF(QXT_FOUND_${U_MOD}) + FOREACH(dep QXT_${U_MOD}_DEPENDSON) + SET(QXT_DEPENDS_${dep} TRUE) + ENDFOREACH(dep) + ENDIF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD}) +ENDFOREACH(module) +MESSAGE(STATUS "Found Qxt Libraries:${QXT_FOUND_MODULES}") diff --git a/cmake/findqxt.cmake b/cmake/findqxt.cmake deleted file mode 100644 index 1ddfa0dd..00000000 --- a/cmake/findqxt.cmake +++ /dev/null @@ -1,155 +0,0 @@ -############# -## basic FindQxt.cmake -## This is an *EXTREMELY BASIC* cmake find/config file for -## those times you have a cmake project and wish to use -## libQxt. -## -## It should be noted that at the time of writing, that -## I (mschnee) have an extremely limited understanding of the -## way Find*.cmake files work, but I have attempted to -## emulate what FindQt4.cmake and a few others do. -## -## To enable a specific component, set your QXT_USE_${modname}: -## SET(QXT_USE_QXTCORE TRUE) -## SET(QXT_USE_QXTGUI FALSE) -## Currently available components: -## QxtCore, QxtGui, QxtNetwork, QxtWeb, QxtSql -## Auto-including directories are enabled with INCLUDE_DIRECTORIES(), but -## can be accessed if necessary via ${QXT_INCLUDE_DIRS} -## -## To add the libraries to your build, TARGET_LINK_LIBRARIES(), such as... -## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QXT_LIBRARIES}) -## ...or.. -## TARGET_LINK_LIBRARIES(YourTargetNameHere ${QT_LIBRARIES} ${QXT_LIBRARIES}) -################### TODO: -## The purpose of this cmake file is to find what components -## exist, regardless of how libQxt was build or configured, thus -## it should search/find all possible options. As I am not aware -## that any module requires anything special to be used, adding all -## modules to ${QXT_MODULES} below should be sufficient. -## Eventually, there should be version numbers, but -## I am still too unfamiliar with cmake to determine how to do -## version checks and comparisons. -## At the moment, this cmake returns a failure if you -## try to use a component that doesn't exist. I don't know how to -## set up warnings. -## It would be nice having a FindQxt.cmake and a UseQxt.cmake -## file like done for Qt - one to check for everything in advance - -############## - -###### setup -SET(QXT_MODULES QxtGui QxtWeb QxtZeroConf QxtNetwork QxtSql QxtBerkeley QxtCore) -SET(QXT_FOUND_MODULES) -FOREACH(mod ${QXT_MODULES}) - STRING(TOUPPER ${mod} U_MOD) - SET(QXT_${U_MOD}_INCLUDE_DIR NOTFOUND) - SET(QXT_${U_MOD}_LIB_DEBUG NOTFOUND) - SET(QXT_${U_MOD}_LIB_RELEASE NOTFOUND) - SET(QXT_FOUND_${U_MOD} FALSE) -ENDFOREACH(mod) -SET(QXT_QXTGUI_DEPENDSON QxtCore) -SET(QXT_QXTWEB_DEPENDSON QxtCore QxtNetwork) -SET(QXT_QXTZEROCONF_DEPENDSON QxtCore QxtNetwork) -SET(QXT_QXTNETWORK_DEPENDSON QxtCore) -SET(QXT_QXTQSQL_DEPENDSON QxtCore) -SET(QXT_QXTBERKELEY_DEPENDSON QxtCore) - -FOREACH(mod ${QXT_MODULES}) - STRING(TOUPPER ${mod} U_MOD) - IF(NOT ${U_MOD}_INCLUDE_DIR) - FIND_PATH(QXT_${U_MOD}_INCLUDE_DIR NAME ${mod} - PATH_SUFFIXES ${mod} include/${mod} - qxt/include/${mod} include/qxt/${mod} - Qxt/include/${mod} include/Qxt/${mod} - PATHS - ~/Library/Frameworks/ - /Library/Frameworks/ - /sw/ - /usr/local/ - /usr - /opt/local/ - /opt/csw - /opt - "C:/Program Files/libqxt/include" - "C:/Program Files (x86)/libqxt/include" - NO_DEFAULT_PATH - ) - FIND_LIBRARY(QXT_${U_MOD}_LIB_RELEASE NAME ${mod} - PATH_SUFFIXES Qxt/lib64 Qxt/lib lib64 lib lib/${CMAKE_LIBRARY_ARCHITECTURE} - PATHS - /sw - /usr/local - /usr - /opt/local - /opt/csw - /opt - "C:/Program Files/libqxt" - "C:/Program Files (x86)/libqxt" - NO_DEFAULT_PATH - ) - FIND_LIBRARY(QXT_${U_MOD}_LIB_DEBUG NAME ${mod}d - PATH_SUFFIXES Qxt/lib64 Qxt/lib lib64 lib lib/${CMAKE_LIBRARY_ARCHITECTURE} - PATHS - /sw - /usr/local - /usr - /opt/local - /opt/csw - /opt - "C:/Program Files/libqxt/" - "C:/Program Files (x86)/libqxt/" - NO_DEFAULT_PATH - ) - IF (QXT_${U_MOD}_LIB_RELEASE) - SET(QXT_FOUND_MODULES "${QXT_FOUND_MODULES} ${mod}") - ENDIF (QXT_${U_MOD}_LIB_RELEASE) - - IF (QXT_${U_MOD}_LIB_DEBUG) - SET(QXT_FOUND_MODULES "${QXT_FOUND_MODULES} ${mod}") - ENDIF (QXT_${U_MOD}_LIB_DEBUG) - ENDIF() -ENDFOREACH(mod) - -FOREACH(mod ${QXT_MODULES}) - STRING(TOUPPER ${mod} U_MOD) - IF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE) - SET(QXT_FOUND_${U_MOD} TRUE) - ENDIF(QXT_${U_MOD}_INCLUDE_DIR AND QXT_${U_MOD}_LIB_RELEASE) -ENDFOREACH(mod) - - -##### find and include -# To use a Qxt Library.... -# SET(QXT_FIND_COMPONENTS QxtCore, QxtGui) -# ...and this will do the rest -IF( QXT_FIND_COMPONENTS ) - FOREACH( component ${QXT_FIND_COMPONENTS} ) - STRING( TOUPPER ${component} _COMPONENT ) - SET(QXT_USE_${_COMPONENT}_COMPONENT TRUE) - ENDFOREACH( component ) -ENDIF( QXT_FIND_COMPONENTS ) - -SET(QXT_LIBRARIES "") -SET(QXT_INCLUDE_DIRS "") - -# like FindQt4.cmake, in order of dependence -FOREACH( module ${QXT_MODULES} ) - STRING(TOUPPER ${module} U_MOD) - IF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD}) - IF(QXT_FOUND_${U_MOD}) - STRING(REPLACE "QXT" "" qxt_module_def "${U_MOD}") - ADD_DEFINITIONS(-DQXT_${qxt_module_def}_LIB) - SET(QXT_INCLUDE_DIRS ${QXT_INCLUDE_DIRS} ${QXT_${U_MOD}_INCLUDE_DIR}) - INCLUDE_DIRECTORIES(${QXT_${U_MOD}_INCLUDE_DIR}) - SET(QXT_LIBRARIES ${QXT_LIBRARIES} ${QXT_${U_MOD}_LIB_RELEASE}) - ELSE(QXT_FOUND_${U_MOD}) - MESSAGE("Could not find Qxt Module ${module}") - RETURN() - ENDIF(QXT_FOUND_${U_MOD}) - FOREACH(dep QXT_${U_MOD}_DEPENDSON) - SET(QXT_DEPENDS_${dep} TRUE) - ENDFOREACH(dep) - ENDIF(QXT_USE_${U_MOD} OR QXT_DEPENDS_${U_MOD}) -ENDFOREACH(module) -MESSAGE(STATUS "Found Qxt Libraries:${QXT_FOUND_MODULES}") -- cgit v1.2.3 From 602955096732bcd652d5d26129e39eba63630f93 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:20:17 +0200 Subject: Fix Linux build --- facetracknoir/facetracknoir.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/facetracknoir/facetracknoir.cpp b/facetracknoir/facetracknoir.cpp index 8940588e..5851a859 100644 --- a/facetracknoir/facetracknoir.cpp +++ b/facetracknoir/facetracknoir.cpp @@ -376,9 +376,7 @@ QFrame *FaceTrackNoIR::get_video_widget() { /** read the name of the first video-capturing device at start up **/ /** FaceAPI can only use this first one... **/ void FaceTrackNoIR::GetCameraNameDX() { -#if 1 -//// ui.widget->setCameraName("No video-capturing device was found in your system: check if it's connected!"); - +#if defined(_WIN32) ui.cameraName->setText("No video-capturing device was found in your system: check if it's connected!"); // Create the System Device Enumerator. -- cgit v1.2.3 From 925643f3960f94820705e9991b0d222493bf87f9 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:23:06 +0200 Subject: Fix Linux build with OpenCV HEAD --- ftnoir_tracker_pt/camera.h | 1 + 1 file changed, 1 insertion(+) diff --git a/ftnoir_tracker_pt/camera.h b/ftnoir_tracker_pt/camera.h index 9977431b..32c76465 100644 --- a/ftnoir_tracker_pt/camera.h +++ b/ftnoir_tracker_pt/camera.h @@ -9,6 +9,7 @@ #define CAMERA_H #include +#include //#include "videoInput/videoInput.h" // ---------------------------------------------------------------------------- -- cgit v1.2.3 From 596b678ed73dc8af5da2b446711a4197be169958 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:25:06 +0200 Subject: Actually fix build this time --- ftnoir_tracker_pt/camera.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ftnoir_tracker_pt/camera.h b/ftnoir_tracker_pt/camera.h index 32c76465..6fec12da 100644 --- a/ftnoir_tracker_pt/camera.h +++ b/ftnoir_tracker_pt/camera.h @@ -9,7 +9,7 @@ #define CAMERA_H #include -#include +#include //#include "videoInput/videoInput.h" // ---------------------------------------------------------------------------- -- cgit v1.2.3 From 43774bb38b10ca8559f62bfed1885f7caa4f43b4 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:28:29 +0200 Subject: Try to fix Linux installation into non-standard prefix --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c41f652..744fad1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ project(facetracknoir) cmake_minimum_required(VERSION 2.8) set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake/") -SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}) -SET(CMAKE_SKIP_RPATH FALSE) +SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +#SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}) +#SET(CMAKE_SKIP_RPATH FALSE) SET(SDK_FACEAPI_ONLY FALSE CACHE BOOL "FaceAPI only (MSVC 2005)") -- cgit v1.2.3 From d88aece5aa762e16bb3caaf7c5f0e8d4c54699d7 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:30:51 +0200 Subject: Try harder to fix Debian build --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 744fad1e..40d50cfe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,7 @@ project(facetracknoir) cmake_minimum_required(VERSION 2.8) set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake/") SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) -#SET(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}) -#SET(CMAKE_SKIP_RPATH FALSE) +SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) SET(SDK_FACEAPI_ONLY FALSE CACHE BOOL "FaceAPI only (MSVC 2005)") -- cgit v1.2.3 From 9a8b417f2ccad57a1dbc05bad50a719cdb5215aa Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:32:34 +0200 Subject: Debian requires special attention, apparently --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40d50cfe..20c77f7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,8 @@ cmake_minimum_required(VERSION 2.8) set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake/") SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +SET(CMAKE_SKIP_INSTALL_RPATH FALSE) +SET(CMAKE_SKIP_RPATH FALSE) SET(SDK_FACEAPI_ONLY FALSE CACHE BOOL "FaceAPI only (MSVC 2005)") -- cgit v1.2.3 From 2f9e74a09db54e05dc74116def09a10460df6435 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 10 Apr 2013 04:38:57 +0200 Subject: Third chance --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 20c77f7a..31f6f6b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) SET(CMAKE_SKIP_INSTALL_RPATH FALSE) SET(CMAKE_SKIP_RPATH FALSE) +SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}") SET(SDK_FACEAPI_ONLY FALSE CACHE BOOL "FaceAPI only (MSVC 2005)") -- cgit v1.2.3 From 7e45559ab1f2c5ae048a3639417e65edcf4428d4 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 11 Apr 2013 18:26:57 +0200 Subject: Fix old regression when creating/loading a profile --- facetracknoir/facetracknoir.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/facetracknoir/facetracknoir.cpp b/facetracknoir/facetracknoir.cpp index 5851a859..2fb07baa 100644 --- a/facetracknoir/facetracknoir.cpp +++ b/facetracknoir/facetracknoir.cpp @@ -566,8 +566,6 @@ void FaceTrackNoIR::saveAs() // Load the current Settings from the currently 'active' INI-file. // void FaceTrackNoIR::loadSettings() { - if (looping) - return; looping = true; qDebug() << "loadSettings says: Starting "; QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // Registry settings (in HK_USER) @@ -1321,6 +1319,8 @@ void FaceTrackNoIR::trackingSourceSelected(int index) // void FaceTrackNoIR::profileSelected(int index) { + if (looping) + return; // // Read the current INI-file setting, to get the folder in which it's located... // -- cgit v1.2.3 From 79f3cabf4639be401ae79ca73f58fdec84e5e2e0 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 11 Apr 2013 18:27:04 +0200 Subject: Adjust coefficients --- ftnoir_tracker_ht/ftnoir_tracker_ht.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp index 4ea8180c..4f7d68f0 100644 --- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp +++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp @@ -110,20 +110,20 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->pyrlk_pyramids = 3; config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21; config->max_keypoints = 200; - config->keypoint_quality = 11; - config->keypoint_distance = 1; - config->keypoint_3distance = 4; + config->keypoint_quality = 2; + config->keypoint_distance = 1.5; + config->keypoint_3distance = 5; //config->force_width = 640; //config->force_height = 480; config->force_fps = iniFile.value("fps", 0).toInt(); config->camera_index = iniFile.value("camera-index", -1).toInt(); config->ransac_num_iters = 100; - config->ransac_max_reprojection_error = 3.1; - config->ransac_max_inlier_error = 3.6; - config->ransac_max_mean_error = 3.8; - config->ransac_abs_max_mean_error = 9; + config->ransac_max_reprojection_error = 3.05; + config->ransac_max_inlier_error = 3.14; + config->ransac_max_mean_error = 3; + config->ransac_abs_max_mean_error = 12; config->debug = 1; - config->ransac_min_features = 0.82; + config->ransac_min_features = 0.86; int res = iniFile.value("resolution", 0).toInt(); if (res < 0 || res >= (int)(sizeof(*resolution_choices) / sizeof(resolution_tuple))) res = 0; @@ -131,7 +131,7 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->force_width = r.width; config->force_height = r.height; config->user_landmarks = false; //iniFile.value("use-bashed-coords").toBool(); - config->flandmark_delay = 200; + config->flandmark_delay = 150; #if 0 if (config->user_landmarks) { -- cgit v1.2.3 From b98f07d984dff6718d7184ed1bf68709f4dae348 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 12 Apr 2013 11:40:43 +0200 Subject: reduce CPU usage during tracking --- facetracknoir/tracker.cpp | 13 ++++++------- ftnoir_tracker_ht/ftnoir_tracker_ht.cpp | 1 + ftnoir_tracker_pt/camera.cpp | 4 ++-- ftnoir_tracker_pt/ftnoir_tracker_pt.cpp | 15 +++++++-------- qfunctionconfigurator/functionconfig.h | 2 +- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/facetracknoir/tracker.cpp b/facetracknoir/tracker.cpp index 15b36f69..f624d6a1 100644 --- a/facetracknoir/tracker.cpp +++ b/facetracknoir/tracker.cpp @@ -143,15 +143,14 @@ void Tracker::run() { bool bTracker2Confid = false; THeadPoseData last; + THeadPoseData newpose; + THeadPoseData last_post_filter; forever { if (should_quit) break; - // Check event for stop thread - - THeadPoseData newpose; newpose.pitch = 0.0f; newpose.roll = 0.0f; newpose.yaw = 0.0f; @@ -199,7 +198,7 @@ void Tracker::run() { // // Only copy valid values // - if (Tracker::confid) { + if (confid) { offset_camera.x = GlobalPose->X.headPos; offset_camera.y = GlobalPose->Y.headPos; offset_camera.z = GlobalPose->Z.headPos; @@ -222,7 +221,7 @@ void Tracker::run() { do_game_zero = false; } - if (Tracker::do_tracking && Tracker::confid) { + if (do_tracking && confid) { // get values target_camera.x = GlobalPose->X.headPos; target_camera.y = GlobalPose->Y.headPos; @@ -238,7 +237,7 @@ void Tracker::run() { // Use advanced filtering, when a filter was selected. // if (Libraries->pFilter) { - THeadPoseData last_post_filter = gameoutput_camera; + last_post_filter = gameoutput_camera; Libraries->pFilter->FilterHeadPoseData(¤t_camera, &target_camera, &new_camera, &last_post_filter, newp); } else { @@ -261,7 +260,7 @@ void Tracker::run() { // // Reverse Axis. // - if (Tracker::do_axis_reverse) { + if (do_axis_reverse) { output_camera.z = Z_PosWhenReverseAxis; // Set the desired Z-position } diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp index 4f7d68f0..33b4c944 100644 --- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp +++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp @@ -228,6 +228,7 @@ bool Tracker::GiveHeadPoseData(THeadPoseData* data) videoWidget->updateImage(shm->frame.frame, shm->frame.width, shm->frame.height); //memcpy(foo, shm->frame.frame, shm->frame.width * shm->frame.height * 3); fresh = true; + shm->frame.width = 0; } if (shm->result.filled) { if (enableRX) diff --git a/ftnoir_tracker_pt/camera.cpp b/ftnoir_tracker_pt/camera.cpp index 96ba3b89..90fcfaaf 100644 --- a/ftnoir_tracker_pt/camera.cpp +++ b/ftnoir_tracker_pt/camera.cpp @@ -92,8 +92,8 @@ bool CVCamera::_get_frame(Mat* frame) { Mat tmp; bool ret = cap->read(tmp); - if (ret) - flip(tmp, *frame, 0); + //if (ret) + // flip(tmp, *frame, 0); return ret; } diff --git a/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp b/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp index b4cb613b..96017d52 100644 --- a/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp +++ b/ftnoir_tracker_pt/ftnoir_tracker_pt.cpp @@ -66,7 +66,6 @@ void Tracker::run() { { - refreshVideo(); QMutexLocker lock(&mutex); if (should_quit) break; @@ -84,14 +83,16 @@ void Tracker::run() const std::vector& points = point_extractor.extract_points(frame, dt, draw_frame); tracking_valid = point_tracker.track(points, camera.get_info().f, dt); frame_count++; + fresh = true; } #ifdef PT_PERF_LOG log_stream<<"dt: "< > points; { - QMutexLocker lock(&mutex); +//QMutexLocker lock(&mutex); if (!draw_frame || frame.empty()) return; // copy the frame and points from the tracker thread @@ -157,8 +158,7 @@ void Tracker::refreshVideo() } video_widget->update_image(frame_copy, points); - fresh = true; - } + } } void Tracker::StartTracker(QFrame* videoframe) @@ -194,7 +194,6 @@ void Tracker::paint_widget() { bool Tracker::GiveHeadPoseData(THeadPoseData *data) { - refreshVideo(); const float rad2deg = 180.0/3.14159265; const float deg2rad = 1.0/rad2deg; { @@ -245,7 +244,7 @@ bool Tracker::GiveHeadPoseData(THeadPoseData *data) data->yaw = rad2deg * alpha; } if (bEnablePitch) { - data->pitch = -rad2deg * beta; + data->pitch = rad2deg * beta; } if (bEnableRoll) { data->roll = rad2deg * gamma; diff --git a/qfunctionconfigurator/functionconfig.h b/qfunctionconfigurator/functionconfig.h index d81711a7..9f380000 100644 --- a/qfunctionconfigurator/functionconfig.h +++ b/qfunctionconfigurator/functionconfig.h @@ -28,7 +28,7 @@ private: QString _title; float getValueInternal(int x); QPointF lastValueTracked; // The last input value requested by the Tracker, with it's output-value. - bool _tracking_active; + volatile bool _tracking_active; int _max_Input; int _max_Output; -- cgit v1.2.3 From 4ff08e52cc4d10491d7676ece8c52792e9e89d82 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 12 Apr 2013 11:49:30 +0200 Subject: Track more features to be robust in poor lighting --- ftnoir_tracker_ht/ftnoir_tracker_ht.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp index 33b4c944..59af6991 100644 --- a/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp +++ b/ftnoir_tracker_ht/ftnoir_tracker_ht.cpp @@ -111,8 +111,8 @@ static void load_settings(ht_config_t* config, Tracker* tracker) config->pyrlk_win_size_w = config->pyrlk_win_size_h = 21; config->max_keypoints = 200; config->keypoint_quality = 2; - config->keypoint_distance = 1.5; - config->keypoint_3distance = 5; + config->keypoint_distance = 1; + config->keypoint_3distance = 4; //config->force_width = 640; //config->force_height = 480; config->force_fps = iniFile.value("fps", 0).toInt(); -- cgit v1.2.3