2017-06-01 3 views
1

Ich versuche, den folgenden Code auszuführen,Kinect schaltet sich nach dem Ausführen dieses Codes und gibt Fehler

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 

aber Kinect schaltet sich ab und gibt den folgenden Fehler:

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 

Ich bin Neu bei PyKinect, damit jede Hilfe geschätzt wird! Vielen Dank!

Antwort

0

Erstens gibt es Tippfehler in Ihrem Code. Sie weisen der skeleton_frame_ready-Funktion in kinect.skeleton_frame_ready+=skeleton_frame_ready einen Rückruf zu, haben ihn jedoch als def skeleton_fram_raedy(skeleton_frame) definiert.

Zweitens denke ich, Ihre Einbuchtung ausgeschaltet ist, können Sie eine Funktionsdefinition in einer for-Schleife in einer while-Schleife haben:

while True: 
    frame= kinect.skeleton_engine.get_next_frame() 
    for skeleton in frame.SkeletonData: 
     def skeleton_fram_raedy(skeleton_frame): 
     ... 

so etwas wie dieses Versuchen:

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() 

Drittens den Fehler zeigt an, dass für den Kinect-Kamerawinkel ein ungültiges Argument an nui übergeben wird. Nicht sicher, warum das so ist. Sie könnten versuchen, den Elevationswinkel direkt nach der Initialisierung von nui auf 0 zu setzen:

with nui.Runtime() as kinect: 
    kinect.camera.elevation_angle = 0 
    kinect.skeleton_frame_ready+=skeleton_frame_ready 
Verwandte Themen