PointCloud踩坑上手C++

PointCloud踩坑上手C++

This article was original written by XRBLS, welcome re-post , but please keep this copyright info, thanks, any question could be asked via wechat: jintianiloveu

pcl 问题还是蛮多的,为了快速的写一些测试案例,不得不探索一下如何用Makefile链接它。现在有了一个Makefile模板:

CC = g++
CFLAGS = -g -Wall
SRCS = r.cpp
PROG = example

# based on usage, libaries can be add or remove
OPENCV = `pkg-config opencv --cflags --libs` 
THOR = -lthor
PCL = -lpcl_io -lpcl_visualization -lpcl_common -lpcl_features 
VTK = -I/usr/local/include/vtk -lvtkCommonCore-8.1
BOOST = -lboost_regex -lboost_system
LIBS = $(OPENCV) $(THOR) $(PCL) $(VTK) $(BOOST)

$(PROG):$(SRCS)
	$(CC) $(CFLAGS) -o $(PROG) $(SRCS) $(LIBS)

这个用来编译我们的小小的pcl测试程序:

#include "opencv/cv.hpp"
#include <opencv2/core/types.hpp>
#include <opencv/cv.hpp>

#include "thor/os.h"
#include <iostream>

#include "pcl/common/common_headers.h"
#include "pcl/io/pcd_io.h"
#include "pcl/visualization/pcl_visualizer.h"
#include "pcl/visualization/cloud_viewer.h"

using namespace std;
using namespace cv;

void showBasicCloud()
{
	pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr(new pcl::PointCloud<pcl::PointXYZ>());
	// create a circle cloud
	for (float z = -1.0; z <= 1.0; z += 0.05)
	{
		for (float angle = 0.0; angle <= 360.0; angle += 5)
		{
			pcl::PointXYZ basic_point;
			basic_point.x = 0.5 * cosf(pcl::deg2rad(angle));
			basic_point.y = sinf(pcl::deg2rad(angle));
			basic_point.z = z;
			cout << basic_point << endl;
			basic_cloud_ptr->points.push_back(basic_point);
		}
	}
	cout << basic_cloud_ptr->points.size() << endl;
	pcl::PointCloud<pcl::PointXYZ> &cloud = *basic_cloud_ptr; //点云
	cloud.points.resize(1*cloud.points.size());
	cout << "cloud shape: " << cloud.width << "x" << cloud.height << endl;
	pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);
	cout << "Saved " << basic_cloud_ptr->points.size() << " data points to test_pcd.pcd." << std::endl;
	// how this cloud
	pcl::visualization::CloudViewer viewer("simple cloud viewer");
	// viwer.setBackgroundColor()
	viewer.showCloud(basic_cloud_ptr);
	while (!viewer.wasStopped())
	{
	}
}

int main()
{
	showBasicCloud();
	return 1;
}

这个程序其实很简单,就是新建一个测试的案例,然后添加一下点到点云中,最后显示出来,但是最后却core dumped了,什么原因???

总的来说问题比较复杂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值