Я пытаюсь заставить работать демонстрационные примеры PCL Visualizer (весь код здесь: http://pointclouds.org/documentation/tutorials/pcl_visualizer.php) для Windows, PCL 1.6, 32-разрядная версия.
Он отлично работает, за исключением части настройки взаимодействия, которая, по иронии судьбы, меня больше всего интересует. Необработанное исключение возникает в строке spinOnce(100) основного метода. Из долгого поиска, который я сделал, похоже, что он глубоко связан с тем, что VTK не является потокобезопасным, а обратные вызовы клавиатуры / мыши мешают окну VTK. Однако я не думаю, что полностью понял это и мог ошибаться. Я нашел очень похожий вопрос здесь, в stackoverflow (используя pcl::visualization в разных потоках из разных экземпляров класса), и я пытался использовать scoped_locks вокруг spinonce, как он предлагает, но я думаю, что делаю это неправильно.
Кому-нибудь удалось полностью использовать этот пример на win32? Для справки, вот моя неудачная попытка заблокировать spinonce:
while (!viewer->wasStopped ())
{
boost::mutex vis_mutex; //storage for static lock
boost::mutex::scoped_lock lock(vis_mutex);
viewer->spinOnce ();
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
Заранее спасибо!