使用QVTK在Qt中进行PCL可视化

 月光魔术师2702935955 发布于 2023-02-13 00:17

我是Qt编程的新手,我正在尝试在Qt Widget中可视化来自PCL的点云.我试图使用这种方法:https://stackoverflow.com/a/11939703/2339680,或(类似):http://www.pcl-users.org/QT-PCLVisualizer-mostly-working-td3285187.html.

我得到编译错误:"尝试在我的QVTKWidget中设置渲染窗口时,从类型'vtkObjectBase*const'中无效static_cast到'vtkRenderWindow*''.

作为参考,我已经包含了下面第二个来源的代码,它会重现错误.

#include 
#include 
#include 
#include 

int main(int argc, char** argv)
{
  QApplication app(argc, argv);

  QVTKWidget widget;
  widget.resize(512, 256);

  //
  {
    pcl::PointCloud::Ptr cloud_xyz (new pcl::PointCloud);
    {

      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(cloud_xyz);
    pviz.setBackgroundColor(0, 0, 0.1);

    vtkSmartPointer renderWindow = pviz.getRenderWindow();
    widget.SetRenderWindow(renderWindow);
  }

  widget.show();
  app.exec();

  return EXIT_SUCCESS;
}

该错误发生在该行

widget.SetRenderWindow(renderWindow);

我使用的是Qt 4.8.0和PCL 1.7.0.有谁知道是否有可能解决这个问题?

1 个回答
  • 灵感来自/sf/ask/17360801/,我想问题是,vtkRenderWindow仅作为前向声明可用于编译器.如果你包括

    #include "vtkRenderWindow.h"
    

    在一开始,一切都应该编译.

    2023-02-13 00:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有