我目前正在尝试计算使用 Kinect For Windows SDK 和 C++ 来移除背景,只从场景中提取玩家。为此,我正在使用开发人员工具包中提供的示例,但我目前遇到了一个问题。
在分析样本时,我发现了这行代码:NuiCreateBackgroundRemovedColorStream(_sensor, &m_pBackgroundRemovalStream);
这行代码启动背景去除,属于KinectBackgroundRemoval.h。当尝试使用这行代码时,Visual Studio 不会在错误下划线,但只要我按下运行,它就会说我的代码有问题:
Error 25 error LNK2019: unresolved external symbol __imp__NuiCreateBackgroundRemovedColorStream@8 referenced in function "public: __thiscall Kinect::Kinect(void)" (??0Kinect@@QAE@XZ) C:\Users\Ricardo\documents\visual studio 2013\Projects\OpenCVSample\OpenCVSample\Kinect.obj OpenCVSample
我的代码如下:
NuiCreateSensorByIndex(0, &_sensor);
_sensor->NuiInitializationFlags();
_sensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | NUI_INITIALIZE_FLAG_USES_COLOR);
_sensor->NuiImageStreamOpen(NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX, DEPTH_RESOLUTION, 0, 2, _depthEvent, &_depthStreamHandle);
_sensor->NuiImageStreamOpen(NUI_IMAGE_TYPE_COLOR, RGB_RESOLUTION, 0, 2, _rgbEvent, &_rgbStreamHandle);
_sensor->NuiSkeletonTrackingEnable(_skeletonEvent, NUI_SKELETON_TRACKING_FLAG_ENABLE_IN_NEAR_RANGE);
NuiCreateBackgroundRemovedColorStream(_sensor, &m_pBackgroundRemovalStream);
m_pBackgroundRemovalStream->Enable(RGB_RESOLUTION, DEPTH_RESOLUTION, _backgroundRemoveEvent);
请注意,我已经配置了包含文件,并且没有在任何错误下划线。我不太习惯 C++,所以这可能是一个非常简单的错误。
非常感谢!
最佳答案
您只是忘记将 kinect sdk 库添加到链接器。正如 MSDN 所述 here ,您需要链接到 KinectBackgroundRemoval180_32.lib
或 KinectBackgroundRemoval180_64.lib
。如果使用 Visual Studio,您可以将这些行添加到您的代码(任何地方):
#if _WIN64
#pragma comment(lib, "KinectBackgroundRemoval180_64.lib")
#elif _WIN32
#pragma comment(lib, "KinectBackgroundRemoval180_32.lib")
#endif
关于c++ - 使用 Kinect c++ 去除背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131389/