Bonjour,
Tout d'abord veuillez m'excuser si je ne poste pas au bon endroit, j'ai pas trouv� de section pour la Kinect.
Voil� mon but est de faire une appli avec la kinect (le but exact n'a pas d'int�r�t ici) et pour commencer j'ai t�l�charg� le SDK v2 qui manque cruellement de tutos pour C++.
Heureusement il est livr� avec des samples en C++, je les ai test�s ils fonctionnent bien.
Du coup je suis partie de l�, j'ai pris le bodyBasics-d2d et j'ai recopi� le code dont j'avais besoin en enlevant tout ce qui a rapport � d2d/api windows car je dois r�aliser mon programme avec openGL (j'ai pas le choix).
et voil� le probl�me c'est que �a ne marche pas, je n'ai peut-�tre pas bien fait mon copier-coller, supprim� trop de choses, pas assez?
L'endroit o� �a p�che c'est au niveau de get_isTracked : sur le sample, �a renvoie true quand �a capte un corps, chez moi, �a reste ind�finiment false (alors que je reproduis les m�mes conditions, kinect au m�me endroit, moi � 2m derri�re qui gesticule)
Si quelqu'un a une piste de recherche je suis tout ou�e (prendre le code du sample et supprimer des choses petit � petit?)
merci beaucoup !!
(le code est pas compliqu�, un init au d�but, une fonction appel�e dans un update)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 void BodyTracking::InitKinect() { GetDefaultKinectSensor(&m_pKinectSensor); m_pKinectSensor->Open(); m_pKinectSensor->get_CoordinateMapper(&m_pCoordinateMapper); IBodyFrameSource* pBodyFrameSource = NULL; m_pKinectSensor->get_BodyFrameSource(&pBodyFrameSource); pBodyFrameSource->OpenReader(&m_pBodyFrameReader); pBodyFrameSource->Release(); pBodyFrameSource = NULL; } void BodyTracking::DetectBodies(int windowWidth, int windowHeight) { IBodyFrame* pBodyFrame = NULL; HRESULT hr = m_pBodyFrameReader->AcquireLatestFrame(&pBodyFrame); if (SUCCEEDED(hr)) { IBody* ppBodies[BODY_COUNT] = { 0 }; pBodyFrame->GetAndRefreshBodyData(_countof(ppBodies), ppBodies); for (int i = 0; i < BODY_COUNT; ++i) { IBody* pBody = ppBodies[i]; if (pBody) { BOOLEAN bTracked = false; pBody->get_IsTracked(&bTracked); //******************problem here : bTracked always false***************// if (bTracked) { Joint joints[JointType_Count]; Point2D jointPoints[JointType_Count]; HandState leftHandState = HandState_Unknown; HandState rightHandState = HandState_Unknown; pBody->get_HandLeftState(&leftHandState); pBody->get_HandRightState(&rightHandState); pBody->GetJoints(_countof(joints), joints); for (int j = 0; j < _countof(joints); ++j) { // Calculate the body's position on the screen DepthSpacePoint depthPoint = { 0 }; m_pCoordinateMapper->MapCameraPointToDepthSpace(joints[j].Position, &depthPoint); float screenPointX = static_cast<float>(depthPoint.X * windowWidth) / 512; float screenPointY = static_cast<float>(depthPoint.Y * windowHeight) / 424; jointPoints[j] = Point2D(screenPointX, screenPointY); } //i just printf for the moment for (int i = 0; i < JointType_Count; ++i) { printf("found coordinates : %f, %f\n", jointPoints[i].x, jointPoints[i].y); } } } } } }
Partager