0

我修改了一个用 C++ 编写的 Kinect 示例,新代码将检索骨架和颜色数据,而原始代码仅获取骨架数据。我意识到代码无法调用我为了处理颜色数据而实现的 ProcessColor 方法。当我仔细检查问题时,我看到以下部分(属于 init 函数)的指示行失败。在调试过程中,当我来到该行时,程序会跳转到 ProcessColor 方法,随后会出错。

if(NULL!=kinectSensor)
{
    // line that fails is the following
    hr = kinectSensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR);
     if (SUCCEEDED(hr))
    {
        // Create an event that will be signaled when color data is available
        m_hNextColorFrameEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

        // Open a color image stream to receive color frames
        hr = kinectSensor->NuiImageStreamOpen(
            NUI_IMAGE_TYPE_COLOR,
            NUI_IMAGE_RESOLUTION_640x480,
            0,
            2,
            m_hNextColorFrameEvent,
            &m_pColorStreamHandle);
    }
}

下面我指出了它跳转的行:

 HRESULT hr;
NUI_IMAGE_FRAME imageFrame;
HANDLE m_hNextColorFrameEvent(INVALID_HANDLE_VALUE), m_pColorStreamHandle(INVALID_HANDLE_VALUE);
// Line that it jumps
hr = kinectSensor->NuiImageStreamGetNextFrame(m_pColorStreamHandle, 0, &imageFrame);

错误消息如下:

KinectSample.exe 中 0x5ca5b4a6 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000047。

如果有帮助,我想指出我从官方 Kinect 示例(ColorBasics-D2D)中添加了上面显示的部分,并且可能存在冲突或其他什么,尽管我在此过程中非常小心。

我该如何解决?有什么想法吗?

4

0 回答 0