pcl+vtk(十)八叉树可视化显示

编程入门 行业动态 更新时间:2024-10-19 00:20:16

<a href=https://www.elefans.com/category/jswz/34/1763827.html style=pcl+vtk(十)八叉树可视化显示"/>

pcl+vtk(十)八叉树可视化显示

一、八叉树简单介绍

八叉树(Octree)是一种空间划分结构,是一种二叉树的扩展,每个节点可以最多有8个子节点。

二、八叉树在VTK中的使用

1.直接加载ply文件显示八叉树

    vtkSmartPointer<vtkPLYReader> PLYReader = vtkSmartPointer<vtkPLYReader>::New();QString fileName = QFileDialog::getOpenFileName(this, "Open PLY", ".", "Open PCD files(*.ply)");if(fileName == "") return;PLYReader->SetFileName(fileName.toStdString().c_str());PLYReader->Update();//八叉树vtkSmartPointer<vtkOctreePointLocator> octree = vtkSmartPointer<vtkOctreePointLocator>::New();octree->SetMaximumPointsPerRegion(5);octree->SetDataSet(PLYReader->GetOutput());octree->BuildLocator();//数据vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();octree->GenerateRepresentation(0, polydata);//映射vtkSmartPointer<vtkPolyDataMapper> octreeMapper = vtkSmartPointer<vtkPolyDataMapper>::New();octreeMapper->SetInputData(polydata);//演员vtkSmartPointer<vtkActor> octreeActor = vtkSmartPointer<vtkActor>::New();octreeActor->SetMapper(octreeMapper);octreeActor->GetProperty()->SetInterpolationToFlat();// 设置对象的着色插值方法。octreeActor->GetProperty()->SetRepresentationToWireframe();// 控制对象的曲面几何图形表达。octreeActor->GetProperty()->SetColor((float)233/255,(float)233/255,(float)233/255);octree->GenerateRepresentation(7, polydata);//创建八叉树区域边界的多数据表示。renderer->AddActor(octreeActor);renderer->ResetCamera();ui->vtk_widget->GetRenderWindow()->Render();

2.根据点云数据显示八叉树

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");if(fileName == "") return;pcl::io::loadPCDFile<pcl::PointXYZ>(fileName.toStdString(), *cloud);vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();for (int i = 0; i<cloud->size(); i++){points->InsertNextPoint(cloud->at(i).x, cloud->at(i).y, cloud->at(i).z);}//数据vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();;polyData->SetPoints(points);//八叉树vtkSmartPointer<vtkOctreePointLocator> octree = vtkSmartPointer<vtkOctreePointLocator>::New();octree->SetMaximumPointsPerRegion(5);octree->SetDataSet(polyData);octree->BuildLocator();//映射vtkSmartPointer<vtkPolyDataMapper> mapperpointCloud_points = vtkSmartPointer<vtkPolyDataMapper>::New();mapperpointCloud_points->SetInputData(polyData);//演员vtkSmartPointer<vtkActor> octreeActor = vtkSmartPointer<vtkActor>::New();octreeActor->GetProperty()->SetInterpolationToFlat();// 设置对象的着色插值方法。octreeActor->GetProperty()->SetRepresentationToWireframe();// 控制对象的曲面几何图形表达。octreeActor->GetProperty()->SetColor((float)200/255,(float)200/255,(float)200/255);octreeActor->SetMapper(mapperpointCloud_points);octree->GenerateRepresentation(8, polyData);//创建八叉树区域边界的多数据表示。renderer->AddActor(octreeActor);renderer->ResetCamera();ui->vtk_widget->GetRenderWindow()->Render();

更多推荐

pcl+vtk(十)八叉树可视化显示

本文发布于:2023-11-14 14:30:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1587765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:pcl   vtk   八叉树

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!