求助帖,pcl 点云可视化。

我自己整理了一段可视化的代码,想的以后可以直接用很方便,但出现了一点问题,请各位路过的到有帮忙解答。。

实现的功能:如果命令行输入一个点云,则可视化这个点云;如果输入两个,则在同一个窗口显示这两个点云。

问题:运行的时候,如果输入两个点云是没毛病的,但只输入一个 点云时显示不出来。

下面是代码:

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/visualization/pcl_visualizer.h>

int
main(int argc, char** argv)
{
	std::string filename1 = argv[1];
	std::cout << "Reading " << filename1 << std::endl;
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);
	if (pcl::io::loadPCDFile<pcl::PointXYZ>(filename1, *cloud1) == -1) // load the file
	{
		PCL_ERROR("Couldn't read file1");
		return -1;
	}
	std::cout << "FILE1 points: " << cloud1->points.size() << std::endl;
	
	boost::shared_ptr<pcl::visualization::PCLVisualizer> for_visualizer_v(new pcl::visualization::PCLVisualizer("pointcloud viewer"));
	for_visualizer_v->setBackgroundColor(255, 255, 255);

	if (argc < 2)
	{
		for_visualizer_v->setBackgroundColor(100, 100, 100);//第一部分背景
		for_visualizer_v->addPointCloud(cloud1, "cloud1");
		for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 255, 0, "cloud1");//“cloud”的颜色
		for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud1");//“cloud”点云点的大小
	}
	else
	{
		std::string filename2 = argv[2];
		std::cout << "Reading " << filename2 << std::endl;
		pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2(new pcl::PointCloud<pcl::PointXYZ>);
		if (pcl::io::loadPCDFile<pcl::PointXYZ>(filename2, *cloud2) == -1) // load the file
		{
			PCL_ERROR("Couldn't read file2");
			return -1;
		}
		std::cout << "FILE2 points: " << cloud2->points.size() << std::endl;

		int v1(0);
		for_visualizer_v->createViewPort(0.0, 0.0, 0.5, 1, v1);//位置
		for_visualizer_v->setBackgroundColor(100, 100, 100, v1);//第一部分背景
		for_visualizer_v->addPointCloud(cloud1, "cloud1", v1);
		for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 0, 255, 0, "cloud1");//“cloud”的颜色
		for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud1");//“cloud”点云点的大小
		int v2(0);
		for_visualizer_v->createViewPort(0.5, 0.0, 1, 1, v2);
		for_visualizer_v->setBackgroundColor(0, 150, 180, v2);
		for_visualizer_v->addPointCloud(cloud2, "cloud2", v2);
		for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 255, 0, 0, "cloud2");
		for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud2");

	}

	while (!for_visualizer_v->wasStopped())
	{
		for_visualizer_v->spinOnce(1000);
	}

	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值