我在C ++中使用Kinect v2相关项目,而我不能在函数外部使用Depth Frame(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清理干净,因此它会反映出来。
我尝试使用memcpy错误仍然存在。
提前致谢。
答案 0 :(得分:0)
您不需要分配内存。
获取指向深度帧数据的指针。
public: HRESULT AccessUnderlyingBuffer( UINT *capacity, UINT16 **buffer )
buffer类型:UINT16 [out]当此方法返回时,包含 指向深度帧数据的指针。
如果我正确理解规范,您在访问之前始终会调用AccessUnderlyingBuffer()
。