【问题标题】:How to store or keep Kinect movement tracking data?如何存储或保留 Kinect 运动跟踪数据?
【发布时间】:2015-10-11 07:41:31
【问题描述】:

我们小组现在面临一个问题,我们的目标是通过 Kinect 设备实现一个使用身体动作的登录系统。也就是说,我们用肢体动作作为所谓的“密码”。为了登录,用户必须通过执行某些只有用户知道的动作来输入“密码”。所以我们只是 第 1 步:检测和跟踪身体运动。 第二步:分析。 第 3 步:与默认密码比较。如果匹配,则登录成功。

第二步我们就不糊涂了。问题是如何存储运动数据。我们知道,Kinect 可以为我们提供头部、颈部等身体的关节。我们如何保留或存储这些相关数据,以某种算法对其进行解析以进行比较,以便我们知道登录是否成功。

提前感谢您的建议。

【问题讨论】:

    标签: gesture-recognition openni 3d-modelling simple-openni kinect-interaction


    【解决方案1】:

    例如,您可以将每个关节的位置数据写入任意文件,例如每一帧的 .txt。 像这样:

    void WriteSkeletonToFile(const nite::UserData& user, std::string filename) {
    
    std::ofstream skeletonFile;
    skeletonFile.open(filename + ".txt", std::fstream::out | std::fstream::app);
    
    auto writeJointCoordinates = [&skeletonFile](const nite::SkeletonJoint& joint) {
        skeletonFile << joint.getPosition().x << ",";
        skeletonFile << joint.getPosition().y << ",";
        skeletonFile << joint.getPosition().z << ",";
    };
    //Center body parts
    writeJointCoordinates(user.getSkeleton().getJoint(nite::JOINT_HEAD));
    writeJointCoordinates(user.getSkeleton().getJoint(nite::JOINT_NECK));
    ... continue for  each joint
    skeletonFile << "\n";
    skeletonFile.close();
    

    之后您可以再次阅读并随意使用它。但是在将其与存储的位置进行比较时,请记住将其与您的活动骨架位置相匹配。 你当然可以保存额外的关节数据,比如旋转(这些都是用位置计算的,所以不是真的必要)、ID 等,但我会推荐一个更光滑的文件格式;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      相关资源
      最近更新 更多