C++ QVTK在Qt中的PCL可视化
我对Qt编程相当陌生,我正试图在Qt小部件中从PCL可视化点云。我尝试过使用这种方法:,或(类似): 在尝试设置QVTKWidget中的渲染窗口时,出现编译错误:“从类型“vtkObjectBase*const”到类型“vtkRenderWindow*”的静态转换无效” 为了便于参考,我包含了下面第二个源代码,它再现了错误C++ QVTK在Qt中的PCL可视化,c++,qt,vtk,point-cloud-library,C++,Qt,Vtk,Point Cloud Library,我对Qt编程相当陌生,我正试图在Qt小部件中从PCL可视化点云。我尝试过使用这种方法:,或(类似): 在尝试设置QVTKWidget中的渲染窗口时,出现编译错误:“从类型“vtkObjectBase*const”到类型“vtkRenderWindow*”的静态转换无效” 为了便于参考,我包含了下面第二个源代码,它再现了错误 #include <pcl/sample_consensus/sac_model_plane.h> #include <pcl/visualization/
#include <pcl/sample_consensus/sac_model_plane.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/common/common.h>
#include <QVTKWidget.h>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QVTKWidget widget;
widget.resize(512, 256);
//
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_xyz (new pcl::PointCloud<pcl::PointXYZ>);
{
for (float y = -0.5f; y <= 0.5f; y += 0.01f)
{
for (float z = -0.5f; z <= 0.5f; z += 0.01f)
{
pcl::PointXYZ point;
point.x = 2.0f - y;
point.y = y;
point.z = z;
cloud_xyz->points.push_back (point);
}
}
cloud_xyz->width = cloud_xyz->points.size ();
cloud_xyz->height = 1;
}
// this creates and displays a window named "test_viz"
// upon calling PCLVisualizerInteractor interactor_->Initialize ();
// how to disable that?
pcl::visualization::PCLVisualizer pviz ("test_viz");
pviz.addPointCloud<pcl::PointXYZ>(cloud_xyz);
pviz.setBackgroundColor(0, 0, 0.1);
vtkSmartPointer<vtkRenderWindow> renderWindow = pviz.getRenderWindow();
widget.SetRenderWindow(renderWindow);
}
widget.show();
app.exec();
return EXIT_SUCCESS;
}
我使用的是Qt4.8.0和PCL1.7.0。有人知道是否有可能绕过这个问题吗?我想问题在于,vtkRenderWindow只能作为转发声明提供给编译器。如果包括
#include "vtkRenderWindow.h"
开始时,所有内容都应编译。您是否禁用了PCLVisualizer创建的窗口?
#include "vtkRenderWindow.h"