gpt4 book ai didi

c++ - PCL : Visualize a point cloud

转载 作者:行者123 更新时间:2023-12-04 01:52:16 25 4
gpt4 key购买 nike

我正在尝试使用 PCL 来可视化点云云查看器。问题是我对 C++ 很陌生,我找到了两个教程 first演示创建 PointCloud 和 second演示点云的可视化。但是,我无法将这两个教程结合起来。
这是我想出的:

#include <iostream>

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>

int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;

// Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);

for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
}

pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
viewer.showCloud (cloud);

while (!viewer.wasStopped ())
{
}

return (0);
}
但即使不编译:
error: no matching function for call to   
‘pcl::visualization::CloudViewer::showCloud(pcl::PointCloud<pcl::PointXYZ>&)’

最佳答案

您的错误消息告诉您需要做什么:

error: no matching function for call to ‘pcl::visualization::CloudViewer::showCloud(pcl::PointCloud<pcl::PointXYZ>&)’

因此,请转到 CloudViewer 的文档并查看此成员函数采用哪些参数: http://docs.pointclouds.org/1.5.1/classpcl_1_1visualization_1_1_cloud_viewer.html

在那里我们看到它需要一个 const MonochromeCloud::ConstPtr &cloud不是您传入的原始引用。这是来自 boost 的智能指针的 typedef:
typedef boost::shared_ptr<const PointCloud<PointT> > pcl::PointCloud< PointT >::ConstPtr

因此,当您创建云时,您需要将其包装在这些智能指针之一中,而不是使其成为局部变量。类似的东西(未经测试):
pcl::MonochromeCloud::ConstPtr cloud(new pcl::PointCloud<pcl::PointXYZ>());

然后,当您传入变量 cloud 时,它将具有正确的类型,并且您不会收到您报告的错误。您还必须更改您的 cloud.foo转至 cloud->foo s。

看着 second example你给,他们也这样做:
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);

关于c++ - PCL : Visualize a point cloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com