将kinect数据转换为opencv矩阵

时间:2014-03-08 17:11:25

标签: c++ opencv kinect-sdk

新的OPENCV和KINECT:)

如果此处还有其他类似的问题,我很抱歉 - 我进行了搜索,但仍然输了。

我正在尝试使用带有opencv的Microsoft Kinect SDK。我查看了SDK中的KinectBridgeWithOpenCVBasis示例,但发现它太复杂了。

这是一个问题:我正在使用此site中的DepthSensor类我试图将深度数据转换为opencv矩阵。代码如下:

DepthSensor *ds = new DepthSensor();
ds->init();
Mat frame;
ds->getDepthMat().copyTo(frame);
imshow("display", ds->getColorMat());

我确实添加了ds-> processDepth();在各个点检查它是否有效。确切的错误消息是:

OpenCV错误:cv :: imshow,fi中的断言失败(size.width> 0& size.height> 0) le C:\ builds \ 2_4_PackSlave-win64-vc12-shared \ opencv \ modules \ highgui \ src \ window.c pp,第261行

opencvtest.exe中0x000007FEFC7B940D处的未处理异常:Microsoft C ++异常:cv ::内存位置0x00000000001AF500处的异常。

关于我如何解决此问题的任何想法?感谢。

MT

1 个答案:

答案 0 :(得分:0)

我对OpenCV和Kinect仍然相当新,但我遇到了this post。它似乎描述了一个类似的问题。如果您查看任何帖子的最后评论,OP已经描述了他们找到的解决方案:

  

感谢您的回答。我想出了这个问题。这是一场冲突   在32位和64位dll之间与编译器相比。当我安装VS   2010年与superpack 2.3编译器我认为尝试使用混合匹配   x86和x64 dll基于它在环境变量中的设置方式   和Vs2010。我通过在另一个上安装VS2010来解决这个问题   只有x86支持编译器的计算机,我没有遇到任何麻烦。   一切都很好!完全相同的设置,只有一个是X86和   另一个是X86和X64。它没有意义,因为编译器应该   选一个吧?而不是x86和64 dll的混合?

另一种(可能是相关的?)可能性是您在安装OpenCV时出现问题。最初几次我尝试构建库我犯了错误,并在尝试运行代码时遇到了奇怪的错误。我最终决定使用预先构建的库。如果您遇到所有OpenCV代码错误,请尝试重新安装。

最后,您似乎只发布了代码片段。我见过很多人要求问题包括完整的代码,以便更容易调试,以防你在其他地方错过了错误。

祝你好运!