zoukankan      html  css  js  c++  java
  • PCL点云处理可视化——法向显示错误“no override found for vtk actor”解决方法

    转:https://blog.csdn.net/bflong/article/details/79137692

    参照:https://blog.csdn.net/imsaws/article/details/15500903

    一、环境 
    Win10 X64 
    VS2015 
    PCL1.8.0AllinOne

    二、代码

    #include "stdafx.h"
    #include <pcl/point_types.h>
    #include <pcl/io/pcd_io.h>
    #include <pcl/kdtree/kdtree_flann.h>
    #include <pcl/features/normal_3d.h>
    #include <pcl/surface/gp3.h>
    #include <pcl/visualization/pcl_visualizer.h>
    #include <pcl/io/pcd_io.h>
    #include <pcl/features/integral_image_normal.h>
    #include <boost/thread/thread.hpp>
    #include <pcl/visualization/pcl_visualizer.h>
    
    
    int main(int argc, char** argv)
    {
        //加载点云模型
        pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
        // pcl::PCLPointCloud2 cloud_blob;
        if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", *cloud) == -1) {
    
            PCL_ERROR("Could not read file 
    ");
        }
        //* the data should be available in cloud
    
        // Normal estimation*
        //法向计算
        pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;
        pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
        //建立kdtree来进行近邻点集搜索
        pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
        //为kdtree添加点云数据
        tree->setInputCloud(cloud);
    
        n.setInputCloud(cloud);
        n.setSearchMethod(tree);
        //点云法向计算时,需要搜索的近邻点大小
        n.setKSearch(20);
        //开始进行法向计算
        n.compute(*normals);
        //* normals should not contain the point normals + surface curvatures
    
        // Concatenate the XYZ and normal fields*
        //将点云数据与法向信息拼接
        pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);
        pcl::concatenateFields(*cloud, *normals, *cloud_with_normals);
    
        /*图形显示模块*/
        //显示设置
        boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    
        //设置背景色
        viewer->setBackgroundColor(0, 0, 0.7);
    
        //设置点云颜色,该处为单一颜色设置
        pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color(cloud, 0, 255, 0);
    
        //添加需要显示的点云数据
        viewer->addPointCloud<pcl::PointXYZ>(cloud, single_color, "sample cloud");
    
        //设置点显示大小
        viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud");
    
        //添加需要显示的点云法向。cloud为原始点云模型,normal为法向信息,10表示需要显示法向的点云间隔,即每10个点显示一次法向,5表示法向长度。
        //viewer->addPointCloudNormals<pcl::PointXYZ, pcl::Normal>(cloud, normals, 1, 0.01, "normals");
        viewer->addPointCloudNormals<pcl::PointNormal>(cloud_with_normals, 10, 0.5, "normals");
        //--------------------
        while (!viewer->wasStopped())
        {
            viewer->spinOnce(100);
            boost::this_thread::sleep(boost::posix_time::microseconds(100000));
        }
    
        // Finish
        return (0);
    }

    三、错误描述 
    这里写图片描述 
    这里写图片描述 
    这里写图片描述

    四、解决方法 
    添加如下代码

    #include <vtkAutoInit.h>
    VTK_MODULE_INIT(vtkRenderingOpenGL);
  • 相关阅读:
    Android获取视频音频的时长的方法
    Android动画效果之Frame Animation(逐帧动画)
    去除自定义Toolbar中左边距
    Android Toolbar样式定制详解
    Android 5.x Theme 与 ToolBar 实战
    Android ToolBar 使用完全解析
    Android开发:最详细的 Toolbar 开发实践总结
    SpannableString 转换局部字体大小,但在EditText测量之前设置内容,测量高度为,字体变小之前的高度
    android在Service中弹出Dialog对话框,即全局性对话框
    Could not find com.android.tools.build:gradle:3.0.0-alpha3
  • 原文地址:https://www.cnblogs.com/jiahenhe2/p/11027865.html
Copyright © 2011-2022 走看看