2014-04-17 1 views
0

현재 Kinect for Windows SDK for C++를 사용하여 장면에서 플레이어 만 추출한 배경을 제거하려고합니다. 이를 위해 개발자 툴킷에서 제공된 샘플을 사용하고 있으며 현재 문제가 있습니다.Kinect로 배경 제거 C++

샘플을 분석하는 동안 다음 코드 줄을 발견했습니다. NuiCreateBackgroundRemovedColorStream (_sensor, & m_pBackgroundRemovalStream);

이 코드 줄은 백그라운드 제거를 시작하고 KinectBackgroundRemoval.h에 속합니다. 코드 줄을 사용하려고 할 때 Visual Studio는 오류를 강조하지 않고 최대한 빨리 실행 키를 누릅니다으로, 내가 내 코드에 문제가 있다고 말한다 :

Error 25 error LNK2019: unresolved external symbol [email protected] referenced in function "public: __thiscall Kinect::Kinect(void)" ([email protected]@[email protected]) 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++에 익숙하지 않기 때문에 정말 간단한 오류 일 수 있습니다.

감사합니다.

답변

1

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 
).
0

저는 C++에 익숙하지 않지만 다른 모든 스트림을 초기화하기 전에 backgroundremoval 스트림을 초기화한다는 사실을 알고 있습니다. 귀하의 BGRemovalStream 모두 이미지, 깊이 & 스켈레톤 스트림을 사용하여 두 스트림에서 데이터를 BG 제거 스트림으로 전달해야합니다.

그래서 이미지/심도 또는 스켈 톤 스트림이 BGRemovalstream에 데이터를 보내거나 보내기 전에 데이터를 작성/초기화하려고 할 수 있습니다.

문제가되지 않을 수도 있지만 편집자가 오류를 표시하지 않는 이유를 설명하고 있지만 실행 중일 때 그 이유를 설명합니다.