2017-06-01 77 views
1

我試圖運行下面的代碼,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所以任何幫助表示讚賞!謝謝!

回答

0

首先,您的代碼中存在拼寫錯誤。您正在爲kinect.skeleton_frame_ready+=skeleton_frame_ready中的skeleton_frame_ready函數分配回調,但已將其定義爲def skeleton_fram_raedy(skeleton_frame)

其次,我認爲你的縮進是關閉的,你必須在一個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相機角度。不知道爲什麼。初始化nui後,您可以嘗試將仰角設置爲0:

with nui.Runtime() as kinect: 
    kinect.camera.elevation_angle = 0 
    kinect.skeleton_frame_ready+=skeleton_frame_ready 
相關問題