3d 可视化网格及其点云之间的区别
我正在使用PCL和网格编辑器(MeshLab)。我感兴趣的是将我的网格导入PCL以进行一些3D处理 我有一个ply格式的网格模型。当我用代码加载模型时:3d 可视化网格及其点云之间的区别,3d,mesh,point-cloud-library,3d,Mesh,Point Cloud Library,我正在使用PCL和网格编辑器(MeshLab)。我感兴趣的是将我的网格导入PCL以进行一些3D处理 我有一个ply格式的网格模型。当我用代码加载模型时: PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud); 几何体不同于直接加载和可视化网格: viewe
PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ());
pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud);
几何体不同于直接加载和可视化网格:
viewer.addModelFromPLYFile(argv[1], "model");
在第二种情况下,我完全像使用网格编辑器一样可视化模型,但在第一种情况下,我可视化了它的变形版本,即球体与椭球相似。这里发生了什么?也许我应该手动采样网格
如果我在查看器中添加这两个模型,差异非常明显,点云比网格小,并且它遭受了一些奇怪的变形(请参见附图)
多谢各位
(来源:)如果有人感兴趣,以下是答案:
PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ());
pcl::PolygonMesh triangles;
pcl::io::loadPolygonFilePLY(argv[1], triangles);
pcl::fromROSMsg(triangles.cloud, *cloud);
PointCloud::Ptr cloud(新的PointCloud());
多边形网格三角形;
pcl::io::LoadPolyConfigly(argv[1],三角形);
pcl::fromROSMsg(triangles.cloud,*cloud);
此代码打开一个PLY文件并将其转换为具有正确形状的点云。我很确定这是1.7.2之前的PCL的一个缺陷,正如发行说明中所声明的,并由我自己的经验证明: 修复了PLYReader中的一个错误,该错误在CloudViewer或PCLVisualizer中显示时会导致点云变形 如果您不升级,请添加一行以修复错误,如下所示:
if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1)
{
std::cout << "Cloud reading failed." << std::endl;
return (-1);
}
cloud->sensor_orientation_.setIdentity();
if(pcl::io::loadPLYFile(文件,*cloud)=-1)
{
标准::cout
if (pcl::io::loadPLYFile <pcl::PointXYZRGBNormal> (file, *cloud) == -1)
{
std::cout << "Cloud reading failed." << std::endl;
return (-1);
}
cloud->sensor_orientation_.setIdentity();