我更改了用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)中添加了上面显示的部分,并且可能存在冲突或其他事情,尽管在此过程中我非常小心。
我该如何解决? 有什么想法吗?