Kinect выключается после запуска этого кода и выдает ошибку
Я пытаюсь запустить следующий код,
from pykinect import nui
from pykinect.nui import JointId
from pykinect.nui import SkeletonTrackingState
from pykinect.nui import TransformSmoothParameters
with nui.Runtime() as kinect:
kinect.skeleton_frame_ready+=skeleton_frame_ready
kinect.skeleton_engine.enable=True
while True:
frame= kinect.skeleton_engine.get_next_frame()
for skeleton in frame.SkeletonData:
def skeleton_fram_raedy(skeleton_frame):
for index,data in enumerate(skeleton):
if skeleton.eTrackingState==nui.SkeletonTrackingState.TRACKED:
head=data.SkeletonPositions[JointId.Head]
print head
но Kinect выключается и выдает следующую ошибку:
Traceback (most recent call last):
File "C:\Users\sayyed javed ahmed\Desktop\Humaira\Practice Codes-Python\skeletonnew.py", line 5, in <module>
with nui.Runtime() as kinect:
File "C:\Python27\lib\site-packages\pykinect\nui\__init__.py", line 126, in __init__
self.camera = Camera(self)
File "C:\Python27\lib\site-packages\pykinect\nui\__init__.py", line 352, in __init__
self.elevation_angle
File "C:\Python27\lib\site-packages\pykinect\nui\__init__.py", line 359, in get_elevation_angle
return self.runtime._nui.NuiCameraElevationGetAngle()
File "C:\Python27\lib\site-packages\pykinect\nui\_interop.py", line 200, in NuiCameraElevationGetAngle
_NuiInstance._NuiCameraElevationGetAngle(self, ctypes.byref(res))
File "_ctypes/callproc.c", line 950, in GetResult
WindowsError: [Error -2147024883] The data is invalid
Я новичок в PyKinect, поэтому любая помощь приветствуется! Спасибо!
1 ответ
Во-первых, в вашем коде есть опечатки. Вы назначаете обратный вызов skeleton_frame_ready
функция в kinect.skeleton_frame_ready+=skeleton_frame_ready
, но определили это как def skeleton_fram_raedy(skeleton_frame)
,
Во-вторых, я думаю, что ваш отступ отключен, у вас есть определение функции в цикле for в цикле while:
while True:
frame= kinect.skeleton_engine.get_next_frame()
for skeleton in frame.SkeletonData:
def skeleton_fram_raedy(skeleton_frame):
...
Попробуйте что-то вроде этого:
from pykinect import nui
from pykinect.nui import JointId
from pykinect.nui import SkeletonTrackingState
from pykinect.nui import TransformSmoothParameters
def skeleton_frame_ready(skeleton_frame):
for skeleton in frame.SkeletonData:
if skeleton.eTrackingState==nui.SkeletonTrackingState.TRACKED:
for index,data in enumerate(skeleton):
head=data.SkeletonPositions[JointId.Head]
print head
with nui.Runtime() as kinect:
kinect.skeleton_frame_ready+=skeleton_frame_ready
kinect.skeleton_engine.enable=True
while True:
frame= kinect.skeleton_engine.get_next_frame()
В-третьих, ошибка указывает на то, что неверный аргумент передается в nui для угла камеры kinect. Не уверен, почему это так. Вы можете попробовать установить угол возвышения на 0 сразу после инициализации nui:
with nui.Runtime() as kinect:
kinect.camera.elevation_angle = 0
kinect.skeleton_frame_ready+=skeleton_frame_ready