将Python(PyKinect)骨架数据转换为点(X,Y)

2024-09-28 23:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个相当简单的问题,但我对Python还不熟悉,似乎无法完成它。在

我想将Python(PyKinect)中的骨架数据坐标转换为点(X,Y)。我知道类似的任务可以在C#(使用Microsoft.Kinect库)中实现,如下所示:

var p = new Point[6];
Point shoulderRight = new Point(), shoulderLeft = new Point();

foreach (Joint j in data.Joints)
{
    switch (j.ID)
    {
        case JointID.HandLeft:
            p[0] = new Point(j.Position.X, j.Position.Y);

            // ...

不过,在Python中(使用PyKinect),我可以获得数据对象:

^{pr2}$

输出为:

('p2', <x=-0.5478253364562988, y=-0.5376561880111694, z=1.7154035568237305, w=1.0>)

但是,我似乎无法将其转换为Point(X,Y)格式。我需要使用NumPy或其他一些外部Python库来实现这一点吗?如有任何建议,我们将不胜感激。在


Tags: 数据innewdatavarpositionmicrosoft骨架
1条回答
网友
1楼 · 发布于 2024-09-28 23:26:37

您可以使用regex来提取值,我不确定这是否是您要查找的,请尝试以下操作:

import re

p2 = "<x=-0.5478253364562988, y=-0.5376561880111694, z=1.7154035568237305, w=1.0>"
p2 = re.findall("-?\d+.\d+",p2)
p2_xy = p2[0],p2[1]
print ("p2",p2_xy)

输出:

^{pr2}$

或者如果你想要更干净的版本:

import re

p2 = "<x=-0.5478253364562988, y=-0.5376561880111694, z=1.7154035568237305, w=1.0>"
p2 = re.findall("-?\d+.\d+",p2)
print ("p2",p2[0],p2[1])

输出:

('p2', '-0.5478253364562988', '-0.5376561880111694')

相关问题 更多 >