IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Kinect for Windows V2 SDK - détection de body


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur 3D
    Inscrit en
    Août 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D

    Informations forums :
    Inscription : Août 2014
    Messages : 23
    Points : 33
    Points
    33
    Par défaut Kinect for Windows V2 SDK - détection de body
    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);
    					}
    				}
    			}
    		}
    	}
    }

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Développeur 3D
    Inscrit en
    Août 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur 3D

    Informations forums :
    Inscription : Août 2014
    Messages : 23
    Points : 33
    Points
    33
    Par défaut
    j'ai trouvé la réponse sur un autre forum c'est tout simple j'avais oublié de release les pointeurs voilàvoilà bisous à tous
    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
    for (int i = 0; i < _countof(ppBodies); ++i)
    		{
    			if (ppBodies[i])
    			{
    				ppBodies[i]->Release();
    				ppBodies[i] = NULL;
    			}
    		}
    	}
     
    	if (pBodyFrame)
    	{
    		pBodyFrame->Release();
    		pBodyFrame = NULL;
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/10/2012, 17h14
  2. Le SDK Kinect pour Windows 1.5 annoncé pour mai
    Par Hinault Romaric dans le forum Windows
    Réponses: 7
    Dernier message: 22/05/2012, 11h48
  3. Réponses: 19
    Dernier message: 01/02/2012, 17h30
  4. Kinect for Windows SDK beta
    Par labmat dans le forum MATLAB
    Réponses: 1
    Dernier message: 05/08/2011, 10h21
  5. Windows SDK for Windows 7 and .NET 4 prévue pour mi Juin
    Par Maxime C. dans le forum Actualités
    Réponses: 0
    Dernier message: 03/05/2010, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo