annotate main.cc @ 1:2afd5c6cc8d2

Class definition export to KinectTrack.h
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Mon, 31 Jan 2011 03:49:24 +0900
parents 1478aad947a6
children 3b5465899da9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <XnOpenNI.h>
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <XnCppWrapper.h>
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <XnVNite.h>
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
1
2afd5c6cc8d2 Class definition export to KinectTrack.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
6 #include "KinectTrack.h"
0
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
1
2afd5c6cc8d2 Class definition export to KinectTrack.h
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 #define INIT_XML_PATH "./kinect.xml"
0
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 void checkRC(const XnStatus &rc, const char *what) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 if (rc != XN_STATUS_OK) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 printf("%s faild: %s\n", what, xnGetStatusString(rc));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 void checkErrors(XnStatus &rc, xn::EnumerationErrors &errors, const char *what) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 if (rc == XN_STATUS_NO_NODE_PRESENT) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 XnChar strError[1024];
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 errors.ToString(strError, 1024);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 printf("%s\n", strError);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 SessionState NIState::gSessionState = NOT_IN_SESSION;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 void NIState::XN_CALLBACK_TYPE sessionStarting(const XnPoint3D &ptPosition, void *userCxt) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 printf("Session start: (%f, %f, %f)\n)", ptPosition.X, ptPosition.Y, ptPosition.Z);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 gSessionState = IN_SESSION;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 void NIState::XN_CALLBACK_TYPE sessionEnding(void *userCxt) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 printf("Session end\n");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 gSessionState = NOT_IN_SESSION;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 void NIState::XN_CALLBACK_TYPE focusProgress(const XnChar *strFocus, const XnPoint3D &ptPosition,
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 XnFloat fProgress, void *userCxt) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 //printf("Focus progress: %s @(%f, %f, %f): %f\n)", strFocus, ptPosition.X, ptPosition.Y, ptPosition.Z, fProgress);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 int main(int argc, char *argv[]) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 xn::Context gContext;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 xn::EnumerationErrors errors;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 XnStatus rc = gContext.InitFromXmlFile(INIT_XML_PATH, &errors);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 checkErrors(rc, errors, "InitFromXMLFile");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 checkRC(rc, "InitFromXMLFile");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 xn::DepthGenerator gDepthGenerator;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 rc = gContext.FindExistingNode(XN_NODE_TYPE_DEPTH, gDepthGenerator);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 checkRC(rc, "Find depth generator");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 xn::HandsGenerator gHandsGenerator;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 rc = gContext.FindExistingNode(XN_NODE_TYPE_HANDS, gHandsGenerator);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 checkRC(rc, "Find hands generator");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 XnVSessionManager *gPSessionManager = new XnVSessionManager();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 rc = gPSessionManager->Initialize(&gContext, "Click,Wave", "RaiseHand");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 checkRC(rc, "SessionManager::Initialize");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 gPSessionManager->RegisterSession(NULL, NIState::sessionStarting, NIState::sessionEnding, NIState::focusProgress);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 return 0;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }