gpt4 book ai didi

c++ - 开始使用 openNi 的问题

转载 作者:行者123 更新时间:2023-11-28 08:05:24 25 4
gpt4 key购买 nike

我刚刚安装了 openNi 库并让我的 kinect 在我的电脑上工作。我的问题是我只是一个 c++ 编程新手。

我从这个页面复制了手部追踪代码:

http://openni.org/Documentation/ProgrammerGuide.html

并将其粘贴到我的 VisualStudio11 测试版项目中。

它一直告诉我变量 xn 没有定义...但我不知道 xn 是什么。

如果可以,请告诉我如何在代码中定义变量 xn,或者我必须做什么才能使代码正常工作。

实现:这是代码,在我上面提到的页面中

#define GESTURE_TO_USE "Click"

xn::GestureGenerator g_GestureGenerator;
xn::HandsGenerator g_HandsGenerator;

void XN_CALLBACK_TYPE
Gesture_Recognized(xn::GestureGenerator& generator,
const XnChar* strGesture,
const XnPoint3D* pIDPosition,
const XnPoint3D* pEndPosition, void* pCookie)
{
printf("Gesture recognized: %s\n", strGesture);
g_GestureGenerator.RemoveGesture(strGesture);
g_HandsGenerator.StartTracking(*pEndPosition);
}
void XN_CALLBACK_TYPE
Gesture_Process(xn::GestureGenerator& generator,
const XnChar* strGesture,
const XnPoint3D* pPosition,
XnFloat fProgress,
void* pCookie)
{}

void XN_CALLBACK_TYPE
Hand_Create(xn::HandsGenerator& generator,
XnUserID nId, const XnPoint3D* pPosition,
XnFloat fTime, void* pCookie)
{
printf("New Hand: %d @ (%f,%f,%f)\n", nId,
pPosition->X, pPosition->Y, pPosition->Z);
}
void XN_CALLBACK_TYPE
Hand_Update(xn::HandsGenerator& generator,
XnUserID nId, const XnPoint3D* pPosition,
XnFloat fTime, void* pCookie)
{
}
void XN_CALLBACK_TYPE
Hand_Destroy(xn::HandsGenerator& generator,
XnUserID nId, XnFloat fTime,
void* pCookie)
{
printf("Lost Hand: %d\n", nId);
g_GestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
}

void main()
{

XnStatus nRetVal = XN_STATUS_OK;

Context context;
nRetVal = context.Init();
// TODO: check error code

// Create the gesture and hands generators
nRetVal = g_GestureGenerator.Create(context);
nRetVal = g_HandsGenerator.Create(context);
// TODO: check error code

// Register to callbacks
XnCallbackHandle h1, h2;
g_GestureGenerator.RegisterGestureCallbacks(Gesture_Recognized,
Gesture_Process,
NULL, h1);
g_HandsGenerator.RegisterHandCallbacks(Hand_Create, Hand_Update,
Hand_Destroy, NULL, h2);

// Start generating
nRetVal = context.StartGeneratingAll();
// TODO: check error code

nRetVal = g_GestureGenerator.AddGesture(GESTURE_TO_USE);

while (TRUE)
{
// Update to next frame
nRetVal = context.WaitAndUpdateAll();
// TODO: check error code
}

// Clean up
context.Shutdown();
}

最佳答案

xn 是一个命名空间。

看来您至少需要包含一个头文件。

尝试将以下内容添加到文件顶部:

#include <XnCppWrapper.h>

可能还有其他未定义的xn:: 类。如果是这样,请使用 documentation识别类,并检查哪个头文件需要 #included。

关于c++ - 开始使用 openNi 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com