2012-11-08 3 views
2

Je travaille actuellement avec Kinect, et je veux dessiner les os d'un squelette sur l'image VGA de la kinect. Tout d'abord, je reçois l'image du kinect:MFC & Kinect: tracer une ligne sur l'image de Kinect

HRESULT hr = globalNui->NuiImageStreamGetNextFrame(videoStreamHandle, 0, &frame); 
INuiFrameTexture * texture = frame.pFrameTexture; 
NUI_LOCKED_RECT lockedRect; 
texture->LockRect(0, &lockedRect, NULL, 0); 

Ici, nous avons dans un , afin que nous puissions faire quelque chose avec elle. La manière la plus courante est de simplement la convertir en bitmap et de la mettre à l'écran, mais je souhaite apporter quelques modifications à l'image. J'utilise Direct2D pour l'amener à l'écran, j'ai donc besoin d'un format d'image qui peut être converti en ID2D1Bitmap, et je dois être capable de tracer des lignes et des points dessus. De quel type d'image ai-je besoin?

Répondre

0

Donc j'ai fait comprendre qu'il n'y a tout simplement pas de formats d'image faisant ce que je veux. Pas de problème, car j'ai découvert toutes les possibilités de Direct2D. Maintenant je ne change pas réellement l'image, mais à l'utilisateur il regarde la même chose.

1

Le tampon verrouillé contiendra un tableau simple de taille width * height * 4 octets. Chaque pixel est un XRGB de 4 octets (voir docs ici: http://msdn.microsoft.com/en-us/library/jj131027.aspx). L'image sera stockée dans l'ordre des lignes, de sorte qu'un pixel à la position x,y aura l'indice de tableau ((width * y) + x) * 4).

Il s'agit d'un format de tampon d'image standard que vous pouvez utiliser librement avec pratiquement n'importe quelle autre bibliothèque de manipulation d'images telle que la propre WIC de Microsoft, IPL ou OpenCV ou autre. Vous ne devriez pas avoir de problème à parcourir le tampon et à définir les valeurs RVB directement, ce qui, pour un travail graphique simple, devrait être plus que suffisant.