问题标签 [pcl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 生成多个 vtkPolyLine 实例
我有一个软件,我从点云地图中选择 5 个点,如下所示:
这样做之后,我通过按下按钮使用 vtkPolyLine 和 3DGlyph 在点之间绘制一条线:
创建线后,我显然无法创建另一条线,因为points
list 仍然具有先前点的值。
我试图清空“drawline”函数末尾的点列表:
但我仍然无法创建另一条线
c++ - 如何清除VTK点
我是 vtk 的新手,我正在编写一个应用程序来绘制多个形状。使用点拾取事件绘制形状,如下所示:
这里的点是一个vtk点列表:
我正在尝试清除points
,以便调整它的大小并为每个形状获取新点,但我还没有找到清除列表的方法。
gpu - PCL-1.12 中的 pcl::gpu::EuclideanClusterExtraction 缺少模板参数
我正在尝试此示例以将 PCL 与 GPU 一起使用并得到错误
~/gpu-pcl/main.cpp:85: 错误: 'gec' pcl::gpu::EuclideanClusterExtraction gec 之前缺少模板参数;
我已经用 pcl-1.11.1 尝试过这个例子,它运行良好。但是当更新到 pcl-1.12.1 时,我得到了那个错误。我的工作环境:Ubuntu 18.04,Cmake 版本 3.20,有什么我错过了吗?
pcl - pcl::IteraticeClosestPointsWithNormals, pcl::GeneralizedIteraticeClosestPoints 取决于云的单位是毫米还是米
我正在为相同的场景运行 ICP,一次以毫米为单位使用云,其他以米为单位。
当前正在尝试运行 pcl::IteraticeClosestPointsWithNormals:
对于限制器:
有人遇到过类似的问题吗?还是我应该更改其他一些参数?对我来说,这看起来像是一个参数问题,但我无法确定是哪一个。表示一些距离/平移。至于轮换,无所谓。
第二个问题是 pcl::GeneralizedIteraticeClosestPoints 文档说
那么当云以毫米为单位时它是如何工作的呢?
对于GeneralizedIteraticeClosestPoints,我也会得到不同的结果,具体取决于云是毫米还是米
textures - PCL 在添加到查看器之前转换 TextureMesh
使用 PCL,我将带纹理的 OBJ 文件加载到pcl::TextureMesh
,并在 pcl 查看器中使用该viewer->addTextureMesh()
功能将其可视化。在可视化网格之前,我需要对其进行转换。对于像转换这样的实际点云格式,该功能pcl::PointCloud<pcl::PointXYZ>
非常简单。pcl::transformPointCloud()
我怎么能改变一个pcl::TextureMesh
?
到目前为止,我试图把它变成一个pcl::PointCloud<pcl::TextureMesh>
(所以我可以使用这个pcl::transformPointCloud()
函数),但是我的 PCL 程序员技能非常有限,所以我不知道该怎么做。要在转换后通过viewer->addTextureMesh()
函数将其添加到查看器中,我需要从pcl::PointCloud<pcl::textureMesh>
中再次提取它,而这里又不知道如何。
任何人都可以帮助我如何转换 apcl::TextureMesh
吗?
先感谢您!!
c++ - pcl::SACsegmentation 的意外结果
Win 11 Pro PCL 1.12.1 Visual Studio
我想使用 SACsegmentation 模块在点云中分割一个平面并得到一些意想不到的结果。虽然我当时解决了这个问题,但我想知道导致问题的原因。我想分割地面(如蓝线集所示),但代码返回总的地面,如红线所示。 在此处输入图像描述这里 是代码和 pcd 文件。 https://github.com/PointCloudLibrary/pcl/files/8101342/compress.zip 在使用 UniformSample 模块对点云进行采样后,它会生成正确的结果。点云的大小会不会有一些影响
opencv - 如何使用激光雷达和相机找到“边界盒装”对象的位置?
这个问题与我的最终项目有关。在凉亭模拟环境中,我试图检测障碍物的颜色并计算机器人与障碍物之间的距离。我目前正在借助 OpenCV 方法(带边界框的对象)识别它们的颜色,但我不知道如何计算它们之间的距离。我有我的机器人的位置。我不会使用立体声。我知道障碍物的大小。等待您的建议和想法。谢谢!
我的机器人的主题:
- 相机/相机/相机信息(类型:sensor_msgs/CameraInfo)
- 相机/相机/image_raw (类型:sensor_msgs/Image)
- 传感器/激光雷达/点(类型:sensor_msgs/PointCloud2)
pcl - 读取 pcd 文件时出现未处理的异常
我正在使用 pcl 库,在 Windows 上使用 Visual Studio 2019。不幸的是,即使使用文件的完整路径,我也无法加载我下载的演示文件。
异常发生在 reader.read("table_scene_lms400.pcd", *cloud); // 记得先下载文件!
这是我的代码:
例外是: PCL_Down_Sample_Point_Clouds.exe 中 0x00007FFB65A94F69 处的未处理异常:Microsoft C++ 异常:内存位置 0x000000377BBFE9A0 处的 std::bad_alloc。
qt-creator - 带有 VTK 和 QVTKOpenGLStereoWidget 的 QtCreator 小部件内的 PCL 查看器
我需要制作一个带有 Qt 小部件的图形窗口,该窗口允许在其中表示我之前使用 PLC 库加载的点云。
这是我到目前为止不起作用的东西(我基于教程和这个答案)。
我正在使用:
- Ubuntu 20.04
- Qt 创建者 5.15
- VTK 9.1
- PCL 1.12
我使用 QVTKOpenGLStereoWidget 的原因是,据我所知,QVTKOpenGLWidget 和 QVTKWidget 不再可用或将在未来的版本中停止使用。
测试.pro
主窗口.ui
它只有一个小部件具有提升QVTKOpenGLSTereoWidget
主窗口.h
我做了VTK库的初始化,包含不同的库头文件,并创建了PCL查看器和基于OpenGL的VTK渲染器。
主窗口.cpp
最后在 MainWindow 类的构造函数中,我只是加载了文件(在本例中它是一个 PLY),然后我尝试在小部件中制作图形表示
主文件
我没有改变任何东西,它是默认的
错误。
我遇到的主要错误是:/usr/local/include/vtk-9.1/vtkSmartPointer.h:225:错误:嵌套名称说明符中使用的类型“vtkGenericOpenGLRenderWindow”不完整 在 /usr/local/include/pcl-1.12/pcl/visualization/point_cloud_geometry_handlers.h:49 包含的文件中,来自 /usr/local/include/pcl-1.12/pcl/visualization/common/actor_map.h:40,来自/usr/local/include/pcl-1.12/pcl/visualization/pcl_visualizer.h:48,来自 /usr/local/include/pcl-1.12/pcl/visualization/cloud_viewer.h:39,来自 ../04_pcl_viewer_V3/MainWindow .h:6,来自 ../04_pcl_viewer_V3/MainWindow.cpp:1: /usr/local/include/vtk-9.1/vtkSmartPointer.h: 在 'static vtkSmartPointer vtkSmartPointer::New() [with T = vtkGenericOpenGLRenderWindow] 的实例化中':../04_pcl_viewer_V3/MainWindow.cpp:16:67:从这里需要/usr/local/include/vtk-9.1/vtkSmartPointer.h:225:69:错误:嵌套名称说明符225中使用的不完整类型'vtkGenericOpenGLRenderWindow' | 静态 vtkSmartPointer New() { return vtkSmartPointer(T::New(), NoReference()); } | ~~~~~~^~