Esempio n. 1
0
 def _event_thread(self):
     handles = (ctypes.c_voidp * 3)()
     handles[0] = self._skeleton_event
     handles[1] = self._depth_event
     handles[2] = self._image_event
     while 1:    
         wait = _WaitForMultipleObjects(3, handles, False, _INFINITE)
         if wait == 0:
             # skeleton data                
             try:
                 frame = self._nui.NuiSkeletonGetNextFrame(0)
             except KinectError:
                 continue
     
             for curSkeleton in frame.SkeletonData:
                 if curSkeleton.eTrackingState != SkeletonTrackingState.NOT_TRACKED:
                     self.skeleton_frame_ready.fire(frame)
                     break
         elif wait == 1:
             # depth event
             depth_frame = self._nui.NuiImageStreamGetNextFrame(self.depth_stream._stream, 0)
             self.depth_frame_ready.fire(depth_frame)                
             self._nui.NuiImageStreamReleaseFrame(self.depth_stream._stream, depth_frame)
         elif wait == 2:
             # image event
             depth_frame = self._nui.NuiImageStreamGetNextFrame(self.video_stream._stream, 0)
             self.video_frame_ready.fire(depth_frame)     
             self._nui.NuiImageStreamReleaseFrame(self.video_stream._stream, depth_frame)
             pass
         else:
             # wait failed in some form (abandoned, timeout, or failed), this ends our loop
             # when we close our events.
             break
Esempio n. 2
0
    def _event_thread(self):
        handles = (ctypes.c_voidp * 3)()
        handles[0] = self._skeleton_event
        handles[1] = self._depth_event
        handles[2] = self._image_event
        while 1:
            wait = _WaitForMultipleObjects(3, handles, False, _INFINITE)
            if wait == 0:
                # skeleton data
                try:
                    frame = self._nui.NuiSkeletonGetNextFrame(0)
                except KinectError:
                    continue

                for curSkeleton in frame.SkeletonData:
                    if curSkeleton.eTrackingState != SkeletonTrackingState.NOT_TRACKED:
                        self.skeleton_frame_ready.fire(frame)
                        break
            elif wait == 1:
                # depth event
                depth_frame = self._nui.NuiImageStreamGetNextFrame(
                    self.depth_stream._stream, 0)
                self.depth_frame_ready.fire(depth_frame)
                self._nui.NuiImageStreamReleaseFrame(self.depth_stream._stream,
                                                     depth_frame)
            elif wait == 2:
                # image event
                depth_frame = self._nui.NuiImageStreamGetNextFrame(
                    self.video_stream._stream, 0)
                self.video_frame_ready.fire(depth_frame)
                self._nui.NuiImageStreamReleaseFrame(self.video_stream._stream,
                                                     depth_frame)
                pass
            else:
                # wait failed in some form (abandoned, timeout, or failed), this ends our loop
                # when we close our events.
                break