2

我目前正在尝试计算两个点集之间的刚性变换,因此我尝试使用 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);

说:

调试断言失败!程序:... MSVC2008 _Qt_SDK_Release\release\Project.exe 文件:c:\Program Files\Microsoft VIsual Studio 10.0\CV\include\vector 行:1200

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

[..] ...检查文档... [..]

有人知道那是什么意思吗?输入云都具有相同的大小并具有填充值。

如果有任何帮助,我将不胜感激!

更新 1:

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

4

1 回答 1

0

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

当前的 Qt SDK 中有 MSVC2008,所以我想它可以从需要的地方获取所有内容。但无论是 Qt 中的编译器还是您使用的可能需要 2010 版本的库之一......

希望能帮助到你!

于 2012-03-07T19:13:49.007 回答