В настоящее время я пытаюсь вычислить жесткое преобразование между двумя точками устанавливается таким образом, я пытался использовать код, указанный в руководстве по pointclouds.org:PCL Жесткого преобразования с использованием - Ошибка итеративного алгоритма ближайших точек: вектор стирает итератор вне диапазона
Для моего случая я только изменил часть, в которой данные случайным образом сгенерированы для того, что загружает данные точки, которые я хочу проанализировать. Все остальное точно так же, как в учебнике ... (Я также попытался точно проверить код учебника со случайными данными, если у меня было что-то неправильно с чтением моих входных данных)
Поскольку я работаю с Qt I, Библиотеку PCL, библиотеку Eigen и библиотеку FLANN для моего проекта. Он находит все заголовки и успешно компилируется MSVC 2008 ...
К сожалению, я всегда получаю сообщение об ошибке выполнения на
icp.setInputTarget(cloud_out);
говоря:
Debug Assertion failed! Program: ...MSVC2008_Qt_SDK_Release\release\Project.exe File: c:\Program Files\Microsoft VIsual Studio 10.0\CV\include\vector Line: 1200
Expression: vector erase iterator outside range
[..] ... check documentation ... [..]
Кто-нибудь знает, что это значит? Входные облака имеют одинаковый размер и заполняют значения.
Я был бы благодарен за помощь!
UPDATE 1:
Сообщение об ошибке показывает, какой путь к файлу для MSVC 2010 (10.0) ... Так что я попытался удалить Visual Studio 2010, так как я на самом деле не нужно. Но все же, если я скомпилирую в режиме Debug, он покажет мне сообщение об ошибке, но вместо этого будет Expression: vector iterators incompatible
... Если я сейчас запустил его в режиме Release, он просто сработает во время выполнения (в той же строке), но не показывает это сообщение об ошибке.
Что такое 'icp' и' cloud_out'? Он не отображает сообщение об отладке при компиляции в режиме Release, потому что утверждения отладки обрабатываются только в компиляции Debug. – cmannett85
Вы пробовали запустить его в отладчике и найти, какая из них запускает его? – cmannett85
cloud_out - это облако точек, которое должно быть сопоставлено. Посмотрите на учебную строку 10. icp - это экземпляр класса IterativeClosestPoint (строка 37). Ну, я попытался отладить его, но я не смог получить информацию из этого, так как я не могу установить точки остановки или что-то еще. Просто увидеть вывод отладчика или дизассемблера не помогло ... Но разве это не странно, что он даже пытается получить некоторую информацию с VC 10.0? Я имею в виду, что после того, как я удалил его, нет даже C: \ Program Files \ Microsoft Visual Studio 10.0 ... –