PCL之可视化之visualizer类


    //可视化
    //创建一个点云带有rgb数据类型的
	boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
   
    //建立一个RGB着色器(颜色处理对象) visualizer利用这样的对象显示自定义的颜色数据
    //利用这样的对象显示自定义颜色数据,在这个示例中,PointCloudColorHandlerRGB对象得到每个点云的RGB颜色字段
	pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb(cloud);
	viewer->addPointCloud<pcl::PointXYZRGB>(cloud, "sample cloud");
	viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud"); // 设置点云大小
	while (!viewer->wasStopped())
	{
		viewer->spinOnce(100);
		boost::this_thread::sleep(boost::posix_time::microseconds(10000));
	}

Visualizer类 是pcl中最全的可视化类,功能更全面,使用更复杂

void visualize_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr& cloud, pcl::PointCloud<pcl::PointXYZ>::Ptr& filter_cloud) {
    //---------显示点云-----------------------
//创建视窗对象并给标题栏定义一个名称“显示点云”, 定义为boost::shared_ptr指针,可以保证其在全局使用,不引起内存错误

    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("显示点云"));
    // 多视口
    int v1(0), v2(0); //设置viewpoint
    viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1); // 在窗口中创建视口, xmin,ymin,xmax,ymax为视口左下角窗口坐标 及右上角窗口坐标,viewport为视口标志
    viewer->setBackgroundColor(0, 0, 0, v1);  //设置背景颜色  
    viewer->addText("point clouds", 10, 10, "v1_text", v1);  //在指定视口添加字符串“point clouds”10,10为在视口的坐标,“v1_text”为添加字符串的id标志
    viewer->createViewPort(0.5, 0.0, 1, 1.0, v2); 
    viewer->setBackgroundColor(0.1, 0.1, 0.1, v2);
    viewer->addText("filtered point clouds", 10, 10, "v2_text", v2);   
    // 按照z字段进行渲染,将z改为x或y即为按照x或y字段渲染  
    pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> fildColor(cloud, "z");//实现从点云中一个普通字段生成颜色 并在VTK中可视化
    //在指定的viewpoint添加点的类型为PointXYZRGB的点云图像,"sample cloud"为点云的id标志,id标志可以保证其他成员方法中也能引用该点云
    //addpointcloud每调用一次就要建一个新的id号
    viewer->addPointCloud<pcl::PointXYZ>(cloud, fildColor, "sample cloud", v1);  
    viewer->addPointCloud<pcl::PointXYZ>(filter_cloud, "cloud_filtered", v2); 
   //在指定的viewpoint内设置id点云的渲染属性,"cloud_filtered"的id值
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 1, 0, "cloud_filtered", v2);

该方法(PointCloudColorHandlerRGBField)要求点云类型包含RGB三个颜色分量,即该方法是直接显示点云中各个点的RGB属性字段信息,而不是通过对点云着色显示不同颜色。

如果输入的pcd文件是PointXYZ类型或是其他不带有RGB属性的点云类型,以PointXYZRGB或是PointXYZRGBA的点云类型读入,那么程序找不到rgb相应的值就会强行赋值为(0,0,0),即黑色。所以,当背景为黑色时就看不到点云了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值