使用IterativeClosestPoint的PCL刚性转换 - 错误:向量擦除迭代器超出范围

时间:2012-03-06 13:08:06

标签: visual-studio-2010 visual-studio-2008 qt computer-vision point-clouds

我目前正在尝试计算两个点集之间的严格转换,所以我尝试使用pointclouds.org上的教程给出的代码:

http://www.pointclouds.org/documentation/tutorials/iterative_closest_point.php#iterative-closest-point

对于我的情况,我只将数据随机生成的部分更改为加载我想要分析的点数据的部分。其他一切与教程完全一样...... (我也尝试使用随机数据测试教程代码,以防我在读取输入数据时遇到一些错误)

由于我使用Qt,我将PCL库,Eigen库和FLANN库集成到我的项目中。它找到所有标题并成功编译MSVC 2008 ...

不幸的是我总是在

处遇到运行时错误
icp.setInputTarget(cloud_out);

话说:

  

Debug Assertion失败了!程序:   ... MSVC2008 _Qt_SDK_Release \ release \ Project.exe文件:c:\ Program   Files \ Microsoft VIsual Studio 10.0 \ CV \ include \ vector Line:1200

     

表达式:向量擦除迭代器超出范围

     

[..] ...检查文件...... [..]

有人知道这意味着什么吗?输入云都具有相同的大小并且具有填充值。

我会感谢任何帮助!

更新1:

错误消息显示MSVC 2010(10.0)的一些文件路径...所以我尝试卸载Visual Studio 2010,因为我真的不需要它。但是,如果我在调试模式下编译,它会显示一条错误消息,但是使用Expression: vector iterators incompatible代替...如果我现在在发布模式下运行它,它只是在运行时崩溃(在同一行),但没有显示该错误消息。

1 个答案:

答案 0 :(得分:0)

这似乎是您使用的库的问题。假设您已经完成了一个干净的构建,检查了您的PATH变量以及删除了Visual Studio 2010的所有内容,这可能是库本身的问题。你在使用正确的吗?

目前的Qt SDK里面有MSVC2008,所以我猜它需要的东西都需要它。但是Qt中的编译器或您使用的其中一个库可能需要2010版本......

希望它有所帮助!