0

Я пытаюсь создать облако точек из карты несоответствий, полученной из метода SGBM. У меня есть изображение RGB, изображение несоответствия, Q-матрица, хранящаяся в файле XML. Я использую код, приведенный в этом blog. Когда я выполняю код, полученный из блога с предоставленными изображениями и Q-матрицей, я получаю ошибку сегментации. Я включаю сегмент кода, который, как я чувствую, вызывает ошибку сегментации.Ошибка сегментации в визуализаторе PCL Point-cloud-библиотеки

//This function creates a PCL visualizer, sets the point cloud to view and returns a pointer 
boost::shared_ptr<pcl::visualization::PCLVisualizer> createVisualizer (pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr cloud) 
{ 
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer")); 
viewer->setBackgroundColor (0, 0, 0); 
pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud); 
viewer->addPointCloud<pcl::PointXYZRGB> (cloud, rgb, "reconstruction"); 
viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "reconstruction"); 
viewer->addCoordinateSystem (1.0); 
viewer->initCameraParameters(); 
return (viewer); 
} 

Когда я прокомментирую этот раздел, и вызов этой функции выполняется в основной программе, ошибок нет. Вызов функции, используемый в основной функции, приведен ниже.

point_cloud_ptr->width = (int) point_cloud_ptr->points.size(); 
point_cloud_ptr->height = 1; 
//Create visualizer // Two lines below is the function call 
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer; 
viewer = createVisualizer(point_cloud_ptr); 
//Main loop 
while (!viewer->wasStopped()) 
{ 
viewer->spinOnce(100); 
boost::this_thread::sleep (boost::posix_time::microseconds (100000)); 
} 

Только для реф ссылка Pastebin на полный код here

+0

Сколько элементов у вас есть в облаке перед созданием визуализатора? Также может быть полезно удалить недопустимые точки перед визуализацией облака (см. ['Pcl :: removeNaNFromPointCloud()'] (http://docs.pointclouds.org/1.7.0/group__filters.html#gac463283a9e9c18a66d3d29b28a575064)). – Kornel

+0

После удаления элементов NaN номер был 223700. Размер изображения составляет 480 * 640. SegFault все еще остается. –

+0

Вы можете визуализировать простой файл PCD с помощью этого средства просмотра? Например. один отсюда: https://github.com/PointCloudLibrary/data – Kornel

ответ

0

я узнал проблему. Это было с версией OpenCV. Я вернулся к Opencv 2.4.9, и он работал как шарм.

Сейчас я использую Ubuntu 14.04 + OpenCV 2.4.9 + Последняя версия PCL

Цените всю помощь. Спасибо.

Смежные вопросы