首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Python (PyKinect)骨架数据转换为点(X,Y)

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

Stack Overflow用户
提问于 2013-01-04 02:09:54
回答 1查看 2.6K关注 0票数 1

这是一个非常简单的问题,但我是Python的新手,我似乎无法完成它。

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

代码语言:javascript
复制
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),我可以获得数据对象:

代码语言:javascript
复制
for index, data in enumerate(skeletons):
p2 = data.SkeletonPositions[JointId.wrist_left] #test left wrist joint data object
print ('p2', p2)

输出为:

代码语言:javascript
复制
('p2', <x=-0.5478253364562988, y=-0.5376561880111694, z=1.7154035568237305, w=1.0>)

但是,我似乎无法将其转换为Point(X,Y)格式。为此,我需要使用NumPy或其他外部Python库吗?任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-05 02:55:26

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

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
('ps', ('-0.5478253364562988', '-0.5376561880111694'))

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

代码语言:javascript
复制
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])

输出:

代码语言:javascript
复制
('p2', '-0.5478253364562988', '-0.5376561880111694')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14144644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档