VTK_MODULE_INIT(vtkRende..._pcl/visualization/cloud_viewer.h路径没错,但是报错">
赞
踩
、问题描述:编译cloud_viewer代码的时候,会卡在
viewer.addSphere(o, 0.25, "sphere", 0);
然后会报出错误
Error:no override found for 'vtkPolyDataMapper'
在程序最前面加上代码
- #include <vtkAutoInit.h>
- VTK_MODULE_INIT(vtkRenderingOpenGL);
- VTK_MODULE_INIT(vtkInteractionStyle);
即可编译过去。
最后给出完整的cloud_viewer代码示例。
- #include <vtkAutoInit.h>
- VTK_MODULE_INIT(vtkRenderingOpenGL);
- VTK_MODULE_INIT(vtkInteractionStyle);
-
-
- #include <pcl/visualization/cloud_viewer.h>
- #include <iostream>
- #include <pcl/io/io.h>
- #include <pcl/io/pcd_io.h>
-
-
- // 简单点云可视化
- void foo()
- {
- pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
- pcl::io::loadPCDFile("maize.pcd", *cloud);
- pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");
- viewer.showCloud(cloud);
- while (!viewer.wasStopped())
- {
- cout << "show pcd";
- }
- }
-
- // 下面的函数是作为回调函数,在主函数中注册后只执行一次,
- // 函数具体实现对可视化对象背景颜色的设置,以及添加一个圆球几何体
- int user_data;
- void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
- {
- viewer.setBackgroundColor(1.0, 0.5, 1.0);
- pcl::PointXYZ o;
- o.x = 5.0;
- o.y = 0;
- o.z = 0;
- viewer.addSphere(o, 0.25, "sphere", 0); // 添加圆球几何对象
- std::cout << "i only run once" << std::endl;
-
- }
-
-
- // 下面的函数是作为回调函数,在主函数中注册后每帧显示都执行一次,
- // 函数具体实现在可视化对象中添加一个刷新显示字符串
- void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
- {
- static unsigned count = 0;
- std::stringstream ss;
- ss << "Once per viewer loop: " << count++;
- viewer.removeShape("text", 0);
- viewer.addText(ss.str(), 200, 300, "text", 0);
- //FIXME: possible race condition here:
- user_data++;
- }
-
- // 下面的函数是主函数,首先加载点云文件到点云对象,并初始化可视化对象viewer,
- // 注册上面定义的回调函数,执行循环直到收到关闭viewer的消息退出程序
- int main()
- {
- // 第二种打开打开点云方法
- pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
- pcl::io::loadPCDFile("maize.pcd", *cloud);
- pcl::visualization::CloudViewer viewer("Cloud Viewer");
- //showCloud函数是同步的,在此处等待直到渲染显示为止
- viewer.showCloud(cloud);
- // 该注册函数在可视化时只调用一次
- viewer.runOnVisualizationThreadOnce(viewerOneOff);
- // 该注册函数在渲染输出时每次都调用
- viewer.runOnVisualizationThread(viewerPsycho);
- while (!viewer.wasStopped())
- {
- //在此处可以添加其他处理
- //user_data++;
- }
-
- // 第一种简答方式打开点云方法
- //foo();
- system("pause");
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。