From a774441fde00f0ce6c8387339c786e9e2f42f088 Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Thu, 31 Jan 2019 10:32:17 +0100 Subject: Kinect: First draft. --- tracker-kinect-face/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 tracker-kinect-face/CMakeLists.txt (limited to 'tracker-kinect-face/CMakeLists.txt') diff --git a/tracker-kinect-face/CMakeLists.txt b/tracker-kinect-face/CMakeLists.txt new file mode 100644 index 00000000..d139b445 --- /dev/null +++ b/tracker-kinect-face/CMakeLists.txt @@ -0,0 +1,6 @@ + +if(DEFINED ENV{KINECTSDK20_DIR}) + otr_module(tracker-kinect-face) + target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC $ENV{KINECTSDK20_DIR}inc) + target_link_libraries(opentrack-tracker-kinect-face $ENV{KINECTSDK20_DIR}lib/x86/kinect20.lib $ENV{KINECTSDK20_DIR}lib/x86/kinect20.face.lib) +endif() -- cgit v1.2.3 From d528f282305b24484861d8913c96c222621cf18c Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Sat, 2 Feb 2019 02:12:30 +0100 Subject: Kinect: Improved CMake configuration for Kinect SDK. --- tracker-kinect-face/CMakeLists.txt | 27 +++++++++++++++++++++++++-- tracker-kinect-face/tracker.cpp | 2 +- tracker-kinect-face/tracker.h | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) (limited to 'tracker-kinect-face/CMakeLists.txt') diff --git a/tracker-kinect-face/CMakeLists.txt b/tracker-kinect-face/CMakeLists.txt index d139b445..9a37f2d8 100644 --- a/tracker-kinect-face/CMakeLists.txt +++ b/tracker-kinect-face/CMakeLists.txt @@ -1,6 +1,29 @@ +# Setup cache variable to Kinect SDK path if(DEFINED ENV{KINECTSDK20_DIR}) + set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) +else() + set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH "") +endif() + +# If we have a valid SDK path, try build that tracker +if(EXISTS ${KINECTSDK20_DIR}) + # Register our module otr_module(tracker-kinect-face) - target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC $ENV{KINECTSDK20_DIR}inc) - target_link_libraries(opentrack-tracker-kinect-face $ENV{KINECTSDK20_DIR}lib/x86/kinect20.lib $ENV{KINECTSDK20_DIR}lib/x86/kinect20.face.lib) + + # Add include path to Kinect SDK + target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC ${KINECTSDK20_DIR}/inc) + + # Check processor architecture + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + # 32 bits + set (kinect-arch-dir "x86") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + # 64 bits + set (kinect-arch-dir "x64") + endif() + + # Link against Kinect SDK libraries + target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.face.lib) + endif() diff --git a/tracker-kinect-face/tracker.cpp b/tracker-kinect-face/tracker.cpp index 1ab14c87..407557f0 100644 --- a/tracker-kinect-face/tracker.cpp +++ b/tracker-kinect-face/tracker.cpp @@ -132,7 +132,7 @@ KinectFaceTracker::~KinectFaceTracker() SafeRelease(m_pKinectSensor); } -module_status KinectFaceTracker::start_tracker(QFrame*) +module_status KinectFaceTracker::start_tracker(QFrame* aFrame) { t.start(); diff --git a/tracker-kinect-face/tracker.h b/tracker-kinect-face/tracker.h index 162e1cff..1f986e22 100644 --- a/tracker-kinect-face/tracker.h +++ b/tracker-kinect-face/tracker.h @@ -30,7 +30,7 @@ class KinectFaceTracker : public ITracker public: KinectFaceTracker(); ~KinectFaceTracker() override; - module_status start_tracker(QFrame *) override; + module_status start_tracker(QFrame* aFrame) override; void data(double *data) override; bool center() override; -- cgit v1.2.3 From ba8796acda06c9ae5f528dbbf655c714844d5429 Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Sat, 2 Feb 2019 17:36:05 +0100 Subject: Various fixes from code review. --- tracker-kinect-face/CMakeLists.txt | 51 ++++++++++++++++++++------------------ tracker-kinect-face/lang/nl_NL.ts | 2 +- tracker-kinect-face/lang/ru_RU.ts | 2 +- tracker-kinect-face/lang/stub.ts | 2 +- tracker-kinect-face/lang/zh_CN.ts | 2 +- tracker-kinect-face/test.h | 2 +- tracker-kinect-face/tracker.cpp | 11 +++----- 7 files changed, 36 insertions(+), 36 deletions(-) (limited to 'tracker-kinect-face/CMakeLists.txt') diff --git a/tracker-kinect-face/CMakeLists.txt b/tracker-kinect-face/CMakeLists.txt index 9a37f2d8..fca1e495 100644 --- a/tracker-kinect-face/CMakeLists.txt +++ b/tracker-kinect-face/CMakeLists.txt @@ -1,29 +1,32 @@ +# Kinect SDK is Windows only +if (WIN32) + # Setup cache variable to Kinect SDK path + if(DEFINED ENV{KINECTSDK20_DIR}) + set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) + else() + set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH "") + endif() -# Setup cache variable to Kinect SDK path -if(DEFINED ENV{KINECTSDK20_DIR}) - set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) -else() - set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH "") -endif() + # If we have a valid SDK path, try build that tracker + if(EXISTS ${KINECTSDK20_DIR}) + # Register our module + otr_module(tracker-kinect-face) -# If we have a valid SDK path, try build that tracker -if(EXISTS ${KINECTSDK20_DIR}) - # Register our module - otr_module(tracker-kinect-face) - - # Add include path to Kinect SDK - target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC ${KINECTSDK20_DIR}/inc) + # Add include path to Kinect SDK + target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC ${KINECTSDK20_DIR}/inc) - # Check processor architecture - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - # 32 bits - set (kinect-arch-dir "x86") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - # 64 bits - set (kinect-arch-dir "x64") - endif() + # Check processor architecture + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + # 32 bits + set (kinect-arch-dir "x86") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + # 64 bits + set (kinect-arch-dir "x64") + endif() - # Link against Kinect SDK libraries - target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.face.lib) + # Link against Kinect SDK libraries + target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.face.lib) + + endif() -endif() +endif() \ No newline at end of file diff --git a/tracker-kinect-face/lang/nl_NL.ts b/tracker-kinect-face/lang/nl_NL.ts index dec7a177..f4fe07d8 100644 --- a/tracker-kinect-face/lang/nl_NL.ts +++ b/tracker-kinect-face/lang/nl_NL.ts @@ -4,7 +4,7 @@ test_metadata - Kinect Face - v0.1 + Kinect Face 0.1 diff --git a/tracker-kinect-face/lang/ru_RU.ts b/tracker-kinect-face/lang/ru_RU.ts index 1634c0c2..d4108ed3 100644 --- a/tracker-kinect-face/lang/ru_RU.ts +++ b/tracker-kinect-face/lang/ru_RU.ts @@ -4,7 +4,7 @@ test_metadata - Kinect Face - v0.1 + Kinect Face 0.1 diff --git a/tracker-kinect-face/lang/stub.ts b/tracker-kinect-face/lang/stub.ts index bb36fb1e..f82903a3 100644 --- a/tracker-kinect-face/lang/stub.ts +++ b/tracker-kinect-face/lang/stub.ts @@ -4,7 +4,7 @@ test_metadata - Kinect Face - v0.1 + Kinect Face 0.1 diff --git a/tracker-kinect-face/lang/zh_CN.ts b/tracker-kinect-face/lang/zh_CN.ts index bb36fb1e..f82903a3 100644 --- a/tracker-kinect-face/lang/zh_CN.ts +++ b/tracker-kinect-face/lang/zh_CN.ts @@ -4,7 +4,7 @@ test_metadata - Kinect Face - v0.1 + Kinect Face 0.1 diff --git a/tracker-kinect-face/test.h b/tracker-kinect-face/test.h index 1af0409b..0f8c170b 100644 --- a/tracker-kinect-face/test.h +++ b/tracker-kinect-face/test.h @@ -22,7 +22,7 @@ class test_metadata : public Metadata { Q_OBJECT - QString name() { return tr("Kinect Face - v0.1"); } + QString name() { return tr("Kinect Face 0.1"); } QIcon icon() { return QIcon(":/images/kinect.png"); } }; diff --git a/tracker-kinect-face/tracker.cpp b/tracker-kinect-face/tracker.cpp index 407557f0..c5517f89 100644 --- a/tracker-kinect-face/tracker.cpp +++ b/tracker-kinect-face/tracker.cpp @@ -38,7 +38,7 @@ bool IsNullVetor(const Vector4& aVector) return false; } - if (aVector.y != 0) + if (aVector.x != 0) { return false; } @@ -74,7 +74,6 @@ bool IsNullPoint(const CameraSpacePoint& aPoint) return false; } - return true; } @@ -150,9 +149,9 @@ module_status KinectFaceTracker::start_tracker(QFrame* aFrame) bool KinectFaceTracker::center() { + // Mark our center iFacePositionCenter = iFacePosition; iFaceRotationCenter = iFaceRotation; - //TODO: Rotation center too return true; } @@ -181,11 +180,9 @@ void KinectFaceTracker::data(double *data) data[2] = (iLastFacePosition.Z - iFacePositionCenter.Z) * 100; // Yaw, Picth, Roll - data[3] = 0-(iLastFaceRotation.X - iFaceRotationCenter.X); // Invert to be compatible with ED out-of-the-box + data[3] = -(iLastFaceRotation.X - iFaceRotationCenter.X); // Invert to be compatible with ED out-of-the-box data[4] = (iLastFaceRotation.Y - iFaceRotationCenter.Y); data[5] = (iLastFaceRotation.Z - iFaceRotationCenter.Z); - - } @@ -463,7 +460,7 @@ void KinectFaceTracker::ProcessFaces() { if (bFaceTracked) { - OutputDebugStringA("Tracking face!\n"); + //OutputDebugStringA("Tracking face!\n"); //IFaceFrameResult* pFaceFrameResult = nullptr; IFaceAlignment* pFaceAlignment = nullptr; -- cgit v1.2.3 From 32c809f5e0c6a9b6a5f202fffe5d034125957551 Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Sat, 2 Feb 2019 18:17:05 +0100 Subject: Kinect: Installing SDK binaries. --- tracker-kinect-face/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'tracker-kinect-face/CMakeLists.txt') diff --git a/tracker-kinect-face/CMakeLists.txt b/tracker-kinect-face/CMakeLists.txt index fca1e495..cbdc2a97 100644 --- a/tracker-kinect-face/CMakeLists.txt +++ b/tracker-kinect-face/CMakeLists.txt @@ -25,7 +25,12 @@ if (WIN32) endif() # Link against Kinect SDK libraries - target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/kinect20.face.lib) + target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.Face.lib) + + # Install Kinect Face DLL + install(FILES ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/Kinect20.Face.dll DESTINATION ./modules/ PERMISSIONS ${opentrack-perms-exec}) + # Install Kinect Face Database + install(DIRECTORY ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/NuiDatabase DESTINATION ./modules/) endif() -- cgit v1.2.3 From 997df9f3cbc9ef04c666e404b96ac4b02097b4f3 Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Sat, 2 Feb 2019 21:51:27 +0100 Subject: Kinect: now with basic video preview. We have a massive memory leak, could have been there before though. --- tracker-kinect-face/CMakeLists.txt | 63 ++++++++++++++++++++------------------ tracker-kinect-face/tracker.cpp | 44 +++++++++++++++++++++----- tracker-kinect-face/tracker.h | 6 ++++ 3 files changed, 75 insertions(+), 38 deletions(-) (limited to 'tracker-kinect-face/CMakeLists.txt') diff --git a/tracker-kinect-face/CMakeLists.txt b/tracker-kinect-face/CMakeLists.txt index cbdc2a97..e12534b2 100644 --- a/tracker-kinect-face/CMakeLists.txt +++ b/tracker-kinect-face/CMakeLists.txt @@ -1,37 +1,40 @@ # Kinect SDK is Windows only if (WIN32) - # Setup cache variable to Kinect SDK path - if(DEFINED ENV{KINECTSDK20_DIR}) - set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) - else() - set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH "") - endif() + find_package(OpenCV QUIET) + if(OpenCV_FOUND) + # Setup cache variable to Kinect SDK path + if(DEFINED ENV{KINECTSDK20_DIR}) + set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) + else() + set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH "") + endif() - # If we have a valid SDK path, try build that tracker - if(EXISTS ${KINECTSDK20_DIR}) - # Register our module - otr_module(tracker-kinect-face) + # If we have a valid SDK path, try build that tracker + if(EXISTS ${KINECTSDK20_DIR}) + # Register our module + otr_module(tracker-kinect-face) - # Add include path to Kinect SDK - target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC ${KINECTSDK20_DIR}/inc) + # Add include path to Kinect SDK + target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC ${KINECTSDK20_DIR}/inc) - # Check processor architecture - if(CMAKE_SIZEOF_VOID_P EQUAL 4) - # 32 bits - set (kinect-arch-dir "x86") - elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) - # 64 bits - set (kinect-arch-dir "x64") - endif() + # Check processor architecture + if(CMAKE_SIZEOF_VOID_P EQUAL 4) + # 32 bits + set (kinect-arch-dir "x86") + elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + # 64 bits + set (kinect-arch-dir "x64") + endif() - # Link against Kinect SDK libraries - target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.Face.lib) - - # Install Kinect Face DLL - install(FILES ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/Kinect20.Face.dll DESTINATION ./modules/ PERMISSIONS ${opentrack-perms-exec}) - # Install Kinect Face Database - install(DIRECTORY ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/NuiDatabase DESTINATION ./modules/) - - endif() + # Link against Kinect SDK libraries + target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.Face.lib) + # Link against OpenCV stuff, needed for video preview + target_link_libraries(opentrack-tracker-kinect-face opencv_imgproc opentrack-cv opencv_core) -endif() \ No newline at end of file + # Install Kinect Face DLL + install(FILES ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/Kinect20.Face.dll DESTINATION ./modules/ PERMISSIONS ${opentrack-perms-exec}) + # Install Kinect Face Database + install(DIRECTORY ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/NuiDatabase DESTINATION ./modules/) + endif(EXISTS ${KINECTSDK20_DIR}) + endif(OpenCV_FOUND) +endif(WIN32) \ No newline at end of file diff --git a/tracker-kinect-face/tracker.cpp b/tracker-kinect-face/tracker.cpp index c5517f89..073cf0be 100644 --- a/tracker-kinect-face/tracker.cpp +++ b/tracker-kinect-face/tracker.cpp @@ -2,6 +2,9 @@ #include "tracker.h" +#include +#include + /// @@ -137,6 +140,15 @@ module_status KinectFaceTracker::start_tracker(QFrame* aFrame) if (SUCCEEDED(InitializeDefaultSensor())) { + // Setup our video preview widget + iVideoWidget = std::make_unique(aFrame); + iLayout = std::make_unique(aFrame); + iLayout->setContentsMargins(0, 0, 0, 0); + iLayout->addWidget(iVideoWidget.get()); + aFrame->setLayout(iLayout.get()); + //video_widget->resize(video_frame->width(), video_frame->height()); + aFrame->show(); + return status_ok(); } @@ -161,12 +173,11 @@ void KinectFaceTracker::data(double *data) const double dt = t.elapsed_seconds(); t.start(); - Update(); - //TODO: check if data is valid ExtractFaceRotationInDegrees(&iFaceRotationQuaternion, &iFaceRotation.X, &iFaceRotation.Y, &iFaceRotation.Z); + //Check if data is valid if (!IsNullPoint(iFacePosition) && !IsNullPoint(iFaceRotation)) { // We have valid tracking retain position and rotation @@ -218,8 +229,6 @@ void KinectFaceTracker::ExtractFaceRotationInDegrees(const Vector4* pQuaternion, *pPitch = dPitch; *pYaw = dYaw; *pRoll = dRoll; - - } @@ -348,7 +357,8 @@ void KinectFaceTracker::Update() if (SUCCEEDED(hr)) { - if (imageFormat == ColorImageFormat_Bgra) + // Fetch color buffer + if (imageFormat == ColorImageFormat_Rgba) { hr = pColorFrame->AccessRawUnderlyingBuffer(&nBufferSize, reinterpret_cast(&pBuffer)); } @@ -356,12 +366,13 @@ void KinectFaceTracker::Update() { pBuffer = m_pColorRGBX; nBufferSize = cColorWidth * cColorHeight * sizeof(RGBQUAD); - hr = pColorFrame->CopyConvertedFrameDataToArray(nBufferSize, reinterpret_cast(pBuffer), ColorImageFormat_Bgra); + hr = pColorFrame->CopyConvertedFrameDataToArray(nBufferSize, reinterpret_cast(pBuffer), ColorImageFormat_Rgba); } else { hr = E_FAIL; } + } if (SUCCEEDED(hr)) @@ -370,6 +381,24 @@ void KinectFaceTracker::Update() ProcessFaces(); } + if (SUCCEEDED(hr)) + { + // Setup our image + QImage image((const unsigned char*)pBuffer, cColorWidth, cColorHeight, sizeof(RGBQUAD)*cColorWidth, QImage::Format_RGBA8888); + if (IsValidRect(iFaceBox)) + { + // Draw our face bounding box + QPainter painter(&image); + painter.setBrush(Qt::NoBrush); + painter.setPen(QPen(Qt::red, 8)); + painter.drawRect(iFaceBox.Left, iFaceBox.Top, iFaceBox.Right - iFaceBox.Left, iFaceBox.Bottom - iFaceBox.Top); + bool bEnd = painter.end(); + } + + // Update our video preview + iVideoWidget->update_image(image); + } + SafeRelease(pFrameDescription); } @@ -465,7 +494,6 @@ void KinectFaceTracker::ProcessFaces() //IFaceFrameResult* pFaceFrameResult = nullptr; IFaceAlignment* pFaceAlignment = nullptr; CreateFaceAlignment(&pFaceAlignment); // TODO: check return? - RectI faceBox = { 0 }; //D2D1_POINT_2F faceTextLayout; //hr = pFaceFrame->get_FaceFrameResult(&pFaceFrameResult); @@ -475,7 +503,7 @@ void KinectFaceTracker::ProcessFaces() // need to verify if pFaceFrameResult contains data before trying to access it if (SUCCEEDED(hr) && pFaceAlignment != nullptr) { - hr = pFaceAlignment->get_FaceBoundingBox(&faceBox); + hr = pFaceAlignment->get_FaceBoundingBox(&iFaceBox); //pFaceFrameResult->get_FaceBoundingBoxInColorSpace(); if (SUCCEEDED(hr)) diff --git a/tracker-kinect-face/tracker.h b/tracker-kinect-face/tracker.h index 1f986e22..5068f185 100644 --- a/tracker-kinect-face/tracker.h +++ b/tracker-kinect-face/tracker.h @@ -6,6 +6,7 @@ #include "api/plugin-api.hpp" #include "compat/timer.hpp" #include "compat/macros.hpp" +#include "cv/video-widget.hpp" // Kinect Header files #include @@ -69,6 +70,8 @@ private: // RGBQUAD* m_pColorRGBX; + RectI iFaceBox = { 0 }; + CameraSpacePoint iLastFacePosition; CameraSpacePoint iFacePosition; CameraSpacePoint iFacePositionCenter; @@ -78,4 +81,7 @@ private: CameraSpacePoint iLastFaceRotation; CameraSpacePoint iFaceRotation; CameraSpacePoint iFaceRotationCenter; + // + std::unique_ptr iVideoWidget; + std::unique_ptr iLayout; }; -- cgit v1.2.3 From 58cc914eb84cb4257904e401a91c0cd5fe3aebf7 Mon Sep 17 00:00:00 2001 From: Stéphane Lenclud Date: Sun, 3 Feb 2019 14:11:00 +0100 Subject: Kinect: CMake adjustments following code review. --- tracker-kinect-face/CMakeLists.txt | 20 +++++++++++--------- tracker-kinect-face/kinect_face_tracker.cpp | 5 +++++ 2 files changed, 16 insertions(+), 9 deletions(-) (limited to 'tracker-kinect-face/CMakeLists.txt') diff --git a/tracker-kinect-face/CMakeLists.txt b/tracker-kinect-face/CMakeLists.txt index e12534b2..690f82e7 100644 --- a/tracker-kinect-face/CMakeLists.txt +++ b/tracker-kinect-face/CMakeLists.txt @@ -4,18 +4,18 @@ if (WIN32) if(OpenCV_FOUND) # Setup cache variable to Kinect SDK path if(DEFINED ENV{KINECTSDK20_DIR}) - set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) + set(SDK_KINECT20 $ENV{KINECTSDK20_DIR} CACHE PATH $ENV{KINECTSDK20_DIR}) else() - set(KINECTSDK20_DIR $ENV{KINECTSDK20_DIR} CACHE PATH "") + set(SDK_KINECT20 $ENV{KINECTSDK20_DIR} CACHE PATH "") endif() # If we have a valid SDK path, try build that tracker - if(EXISTS ${KINECTSDK20_DIR}) + if(EXISTS ${SDK_KINECT20}) # Register our module otr_module(tracker-kinect-face) # Add include path to Kinect SDK - target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC ${KINECTSDK20_DIR}/inc) + target_include_directories(opentrack-tracker-kinect-face SYSTEM PUBLIC "${SDK_KINECT20}/inc") # Check processor architecture if(CMAKE_SIZEOF_VOID_P EQUAL 4) @@ -23,18 +23,20 @@ if (WIN32) set (kinect-arch-dir "x86") elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64 bits - set (kinect-arch-dir "x64") + set (kinect-arch-dir "x64") + else() + message(FATAL_ERROR "Kinect: architecture not supported!") endif() # Link against Kinect SDK libraries - target_link_libraries(opentrack-tracker-kinect-face ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.lib ${KINECTSDK20_DIR}/lib/${kinect-arch-dir}/Kinect20.Face.lib) + target_link_libraries(opentrack-tracker-kinect-face "${SDK_KINECT20}/lib/${kinect-arch-dir}/Kinect20.lib" "${SDK_KINECT20}/lib/${kinect-arch-dir}/Kinect20.Face.lib") # Link against OpenCV stuff, needed for video preview target_link_libraries(opentrack-tracker-kinect-face opencv_imgproc opentrack-cv opencv_core) # Install Kinect Face DLL - install(FILES ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/Kinect20.Face.dll DESTINATION ./modules/ PERMISSIONS ${opentrack-perms-exec}) + install(FILES "${SDK_KINECT20}/Redist/Face/${kinect-arch-dir}/Kinect20.Face.dll" DESTINATION "./modules/" PERMISSIONS ${opentrack-perms-exec}) # Install Kinect Face Database - install(DIRECTORY ${KINECTSDK20_DIR}/Redist/Face/${kinect-arch-dir}/NuiDatabase DESTINATION ./modules/) - endif(EXISTS ${KINECTSDK20_DIR}) + install(DIRECTORY "${SDK_KINECT20}/Redist/Face/${kinect-arch-dir}/NuiDatabase" DESTINATION "./modules/") + endif(EXISTS ${SDK_KINECT20}) endif(OpenCV_FOUND) endif(WIN32) \ No newline at end of file diff --git a/tracker-kinect-face/kinect_face_tracker.cpp b/tracker-kinect-face/kinect_face_tracker.cpp index 51990693..0b7775bc 100644 --- a/tracker-kinect-face/kinect_face_tracker.cpp +++ b/tracker-kinect-face/kinect_face_tracker.cpp @@ -186,6 +186,11 @@ void KinectFaceTracker::data(double *data) iLastFacePosition = iFacePosition; iLastFaceRotation = iFaceRotation; } + else + { + //TODO: after like 5s without tracking reset position to zero + //TODO: Instead of hardcoding that delay add it to our settings + } // Feed our framework our last valid position and rotation data[0] = (iLastFacePosition.X - iFacePositionCenter.X) * 100; // Convert to centimer to be in a range that suites OpenTrack. -- cgit v1.2.3