c# - Kinect 操纵骨架数据

标签 c# .net kinect

我有一个 Skeleton 骨架,它来自 SkeletonFrameReady 事件。而且我有一个在 window 上画骨架的功能,

void DrawSkeleton(Skeleton s),

它将骨架作为输入并将骨架的二维图像绘制到我的窗口。

现在,我想更改右手的 x 和 y 值,并使用相同的函数 void DrawSkeleton(Skeleton s) 将其绘制在窗口上。

但是,当我尝试做类似的事情时:

skeleton.Joints[JointType.HandRight].Position.X = 3;

它不允许我这样做:

Cannot modify the return value of 'Microsoft.Kinect.Joint.Position' because it is not a variable.

这可能是因为 Position 不是变量,而是属性。

问题:

如何复制一个Skeleton 对象并更改该对象上JointPosition 值。

最佳答案

是的,你可以。

您只需创建一个新的 Position 对象并覆盖您喜欢的 Position。

var movedPosition = new SkeletonPoint
{
    X = (float)(mouseJoint.Position.X - 0.4),
    Y = (float)(mouseJoint.Position.Y - 0.3)
};

var movedJoint = new Joint
{
    Position = movedPosition
};

这是一个实际项目中的示例,我们希望在不实际修改骨架的情况下纠正手的位置以调整鼠标

关于c# - Kinect 操纵骨架数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740275/

相关文章:

c# - 表单关闭事件

c# - 如何从注册表读取二进制数据到字节数组

c# - 拉丁文、中文、西里尔文等的子字符串 UTF-8

c# - 如何获取具有 : in its name? 的元素

c# - 将字体高度设置为文本 block 高度的一半

c# - 将 Kinect 的 v2.0 运动存储到 BVH 文件

c# - Kinect 语音没有得到识别器

c# - 无法转换 System.Runtime.Remoting.ObjectHandle

c# - .NET:解析本地化货币

c# - 如何使用 Kinect 跟踪一个人 (trackingID)