+ def gestureProgressCB(self, src, gesture, point, progress) :
+ print 'gestureProgress', src, gesture, point, progress
+ self.handsGene.start_generating()
+ self.handsGene.start_tracking(point)
+ self.handCenteredPosition = point
+
+ def newUserCB(self, *args, **kw) :
+ print 'newUserCB', args, kw
+
+ def lostUserCB(self, *args, **kw) :
+ print 'lostUserCB', args, kw
+
+
+ def capture(self) :
+ rgb_frame = numpy.fromstring(self.imgGene.get_raw_image_map_bgr(), dtype=numpy.uint8).reshape(480, 640, 3)
+ image = cv.fromarray(rgb_frame)
+ cv.CvtColor(cv.fromarray(rgb_frame), image, cv.CV_BGR2RGB)
+ pyimage = pygame.image.frombuffer(image.tostring(), cv.GetSize(image), 'RGB')
+ return pyimage
+
+ def update(self) :
+ self.context.wait_any_update_all()
+ #self.context.wait_and_update_all()
+ #return self.context.wait_one_update_all(self.imgGene)
+
+
+class RGBSprite(pygame.sprite.DirtySprite, RGB) :
+
+ def __init__(self, alpha=255, size=SCREEN_SIZE) :
+ pygame.sprite.DirtySprite.__init__(self)
+ RGB.__init__(self)
+ self.dirty = 2 # toujours dirty !
+ self.size = size
+ self.image = pygame.Surface(size)
+ self.workSur = pygame.Surface(SCREEN_SIZE)
+ self.image.set_alpha(alpha)
+ self.rect = pygame.Rect((0, 0), (0, 0))
+
+ def update(self) :
+ RGB.update(self)
+ img = self.capture()
+ self.workSur.blit(img, (0, 0))
+ self.workSur = pygame.transform.flip(self.workSur, True, False) # miroir
+ if self.size != SCREEN_SIZE :
+ pygame.transform.scale(self.workSur, self.size, self.image) # étirement, blit implicite
+ else :
+ self.image.blit(self.workSur, (0, 0))
+
+
+def main() :