小编gui*_*gui的帖子

可视化网格与其点云之间的区别

我正在使用PCL和Mesh编辑器(MeshLab).我有兴趣将我的网格导入PCL进行一些3D处理.

我有一个网格模型.当我用代码加载模型时:

PointCloud<PointXYZRGBA>::Ptr cloud (new PointCloud<PointXYZRGBA> ()); 
pcl::io::loadPLYFile<pcl::PointXYZRGBA>(argv[1], *cloud); 
Run Code Online (Sandbox Code Playgroud)

我把它想象成一个点云:

visualization::PCLVisualizer viewer ("Model"); 
viewer.addPointCloud (cloud,"model"); 
Run Code Online (Sandbox Code Playgroud)

几何体与直接加载和可视化网格物体不同:

viewer.addModelFromPLYFile(argv[1], "model"); 
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我完全像使用网格编辑器一样可视化模型,但在第一种情况下,我可视化它的变形版本,即球体就像椭圆体一样.这里发生了什么?也许我应该手动采样网格?

如果我在观察器中添加两个模型,差异非常明显,点云比网格小,并且它遭受了一些奇怪的变形(请参见附图)

非常感谢你

ply http://www.pcl-users.org/file/n4028582/meshply.png

3d mesh point-cloud-library

4
推荐指数
1
解决办法
3566
查看次数

使用两个对象作为unordered_map或替代方案的哈希键

定义了我的对象myType后,我需要存储这些对象之间的关系.这些关系存储在矩阵中.

事先知道元素的数量,并非所有元素都有关系(element1可以与element3有关系,但可能没有与5有关)并且内存是个问题.例如,它可能看起来像:

element45与以下内容相关联:

  • element3具有特征[3,1; 1,4]
  • element12具有特征[1,1; 1,1]
  • element1780具有特征[8,1; 1,4]

element1661连接到:

  • 具有特征的元素3 [3,1; 6,4]
  • element1具有特征[1,1; 1,9]
  • element1780具有特征[8,1; 1,1]

有:

myType* element1;
myType* element2;
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西(正确指出元素):

my_table[element1][element2][1][2]=7;
Run Code Online (Sandbox Code Playgroud)

我曾考虑使用boost库创建嵌套哈希表:

boost::unordered_map<myType*, boost::unordered_map<myType*,
                std::vector<std::vector <unsigned short int> > > > my_table;
Run Code Online (Sandbox Code Playgroud)

但是,即使代码编译,它也会崩溃(Segmentation fault,它指向计算哈希键的一行),运行一条简单的行,如:

my_table[element1][element2].resize(2);
for(int t=0; t<2; ++t)
    my_table[element1][element2][t].resize(2);
Run Code Online (Sandbox Code Playgroud)

任何人都能给我一些关于这个的消息吗?这实际上或概念上是错误的吗?

欢迎使用任何其他方法来处理这个问题.

谢谢

c++ hash boost

4
推荐指数
1
解决办法
483
查看次数

标签 统计

3d ×1

boost ×1

c++ ×1

hash ×1

mesh ×1

point-cloud-library ×1