Я новичок в PCL (библиотека облаков точек) и просто хочу применить ICP к двум наборам точек. Однако онлайн-образец кода для ICP выдает фатальную ошибку, когда я пытаюсь запустить его с 64-разрядной версией Visual Studio 2010. Я пробовал разные способы создания облака точек, но безуспешно. Неустранимая ошибка происходит внутри icp.setInputTarget
в строке target_ = target.makeShared ();
Вот как я создаю обе свои облачные точки
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in (new pcl::PointCloud<pcl::PointXYZ>);
cloud_in->width = _head_width+1;
cloud_in->height = _head_height+1;
cloud_in->is_dense = true;
for(int x=0; x<=width; x++) {
for(int y=0; y<=height; y++) {
float z = depths[x][y];
pcl::PointXYZ curr_point;
curr_point.x = x;
curr_point.y = y;
curr_point.z = z;
cloud_in->points.push_back(curr_point);
}
}
И вот тут возникает ошибка
pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
icp_dummy.setInputCloud(cloud_in);
icp_dummy.setInputTarget(cloud_out); /* This throws a fatal error */
Любая помощь будет оценена по достоинству