我在C++中处理Kinect v2相关项目,而我不能在函数外使用深度帧(BYTE*)。
它在最初的几分钟内有效,我想运气不错。
然后我出现了错误,比如:
读取字符串的字符时出错
和访问违规错误,并且在某个时间点没有为kinect20.dll加载符号。
这是我调用值的方法。
BYTE* bodyIndex = new BYTE[512*424]; // initialization
HRESULT frameGet(){
//Initialization method if success
hr = pDepthFrame->AccessUnderlyingBuffer(&m_nDepthBufferSize, &bodyIndex); //Kinect dll method
prints(depth[300]); // Prints the value every time
return hr;
}
HRESULT getDepthFrame(){
if frameGet is success
prints(bodyIndex[300]); // throws error reading character of string
return hr;
}
有人能解释一下我如何每次都能访问bodyIndex数据吗。
当发布完整的代码时,我没有得到任何回应,所以我需要c++的工作原理。
如果假设是正确的,深度数据有时会被kinectdll清理,这样它就会反映出来。
我试着记住错误仍然存在。
提前谢谢。
根据https://msdn.microsoft.com/en-us/library/microsoft.kinect.kinect.idepthframe.accessunderlyingbuffer.aspx
你不需要分配内存。
获取指向深度帧数据的指针。
public: HRESULT AccessUnderlyingBuffer( UINT *capacity, UINT16 **buffer )
buffer Type:UINT16[out]当此方法返回时,包含指向深度帧数据的指针。
如果我正确理解规范,您总是在访问它之前调用AccessUnderlyingBuffer()
。