#ifndef DATA_HPP #define DATA_HPP #include namespace opengaze{ /** * face and facial landmark detection data * @param face_id personal id from tracking across frames * @param certainty detection score, 1 is the best, -1 is the worst * @param landmarks detected six facial landmarks as four eye corners and two mouth corners * @param face_bb detected face bounding box */ struct FaceData { unsigned long face_id; double certainty; cv::Point2f landmarks[6]; cv::Rect_ face_bb; }; /** * eye image related data * @param leye_pos/reye_pose 3D eyeball center position for left and right eyes in the original camera coordinate system * @param leye_img/reye_img eye image * @param leye_rot/reye_rot rotation matrix during the data normalization procedure */ struct EyeData { // cv::Mat head_r, head_t; cv::Mat leye_pos, reye_pos; // // normalized eyes cv::Mat leye_img, reye_img; cv::Mat leye_rot, reye_rot; }; /** * face patch data related to data normalization * @param head_r head pose as center of the face * @param head_t head translation as center of the face * @param face_rot rotation matrix during the data normalization procedure * @param face_center 3D face center in the original camera coordinate system * @param debug_img use for debug to show the normalized face image * @param face_patch normalized face image */ struct FacePatchData { cv::Mat head_r, head_t; cv::Mat face_rot; cv::Mat face_center; cv::Mat debug_img; cv::Mat face_patch; }; /** * gaze data * @param lgaze3d/lgaze3d gaze directions of left and right eyes in the camera coordinate system * @param gaze3d gaze direction estimated from face patch in the in the camera coordinate system * @param lgaze2d/rgaze2d projected gaze positions on the screen coordinate from left and right eyes * @param gaze2d projected gaze positions from face patch on the screen coordinate */ struct GazeData { cv::Vec3f lgaze3d, rgaze3d; cv::Vec3f gaze3d; cv::Point2f lgaze2d, rgaze2d; cv::Point2f gaze2d; }; /** * The general output data structure * @param face_data store face and facial landmark detection data * @param eye_data store data related to eye image input * @param face_patch_data normalized face path data * @param gaze_data gaze data in 2D and 3D spaces */ struct Sample { FaceData face_data; EyeData eye_data; FacePatchData face_patch_data; GazeData gaze_data; }; } #endif //DATA_HPP