看了看以前的代码,有一小段代码很有意思,是关于pcl点云处理的。
如有帮助,点赞收藏关注!!!
读取点云数据,想可视化点云数据,并根据选择,实时显示点云的空间坐标数值。
接下来的代码基于c++ pcl 1.8.1 实现。
cpp
点击点云显示值
<显示点云
pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("viewer"));
viewer->addPointCloud(graycloudC, "cloud");
viewer->setCameraPosition(0, 0, -2, 0, -1, 0, 0);
// 添加点拾取回调函数
CallbackArgs cb_args;
PointCloudT::Ptr clicked_points_3d(new PointCloudT);
cb_args.clicked_points_3d = clicked_points_3d;
cb_args.viewerPtr = pcl::visualization::PCLVisualizer::Ptr(viewer);
viewer->registerPointPickingCallback(pickPointCallback, (void*)&cb_args);
//按住shift键 + 点击鼠标,可成功选择点云。
//如果选择不上那就滚动滚轮缩小点云体积,如果还是选择不上,emm那就多尝试两次。
std::cout << "Shift+click on three floor points, then press 'Q'..." << std::endl;
viewer->spin();
while (!viewer->wasStopped())
{
viewer->spinOnce(100);
}
效果示例如下:
红点即为我选择的点云点,XYZ坐标为:-110.987,-21.7817, 943
本次示例只选择并显示一个点云点,但点云界面没有关闭时可以一直选取点读数。每次只红色高亮一个点并报一组xyz。
操作完成后,可以关闭点云界面弹窗。代码即可向下继续运行。
如有帮助,点赞收藏关注!!!