#ifndef __APP__ #define __APP__ #include #include #include #include #include #include #include using namespace Microsoft::WRL; #include class Kinect { private: // Sensor ComPtr kinect; // Coordinate Mapper ComPtr coordinateMapper; // Reader ComPtr colorFrameReader; ComPtr bodyFrameReader; std::array, BODY_COUNT> gestureFrameReader; // Color Buffer std::vector colorBuffer; int colorWidth; int colorHeight; unsigned int colorBytesPerPixel; cv::Mat colorMat; // Gesture Buffer std::vector> gestures; std::array, BODY_COUNT> results; std::array colors; int offset; public: // Constructor Kinect(); // Destructor ~Kinect(); // Processing void run(); private: // Initialize void initialize(); // Initialize Sensor inline void initializeSensor(); // Initialize Color inline void initializeColor(); // Initialize Body inline void initializeBody(); // Initialize Gesture inline void initializeGesture(); // Finalize void finalize(); // Update Data void update(); // Update Color inline void updateColor(); // Update Body inline void updateBody(); // Update Gesture inline void updateGesture(); // Retrieve Discrete Gesture Result inline std::string retrieveDiscreteGestureResult( const ComPtr& gestureFrame, const ComPtr& gesture ); // Retrieve Continuous Gesture Result inline std::string retrieveContinuousGestureResult( const ComPtr& gestureFrame, const ComPtr& gesture ); // Retrive Gesture Name inline std::string gesture2string( const ComPtr& gesture ); // Draw Data void draw(); // Draw Color inline void drawColor(); // Draw Gesture inline void drawGesture(); // Draw Results inline void drawResult( cv::Mat& image, const std::vector& results, const cv::Point& point, const double scale, const cv::Vec3b& color, const int thickness = 2 ); // Show Data void show(); // Show Gesture inline void showGesture(); }; #endif // __APP__