当前位置:网站首页>1.读写点云文件
1.读写点云文件
2022-08-04 21:02:00 【Callmegodyu、】
1.PCD文件读写
#include<iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/point_types.h>
void savePcdFun()//save pcdfile
{
pcl::PointCloud<pcl::PointXYZ> cloud;
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize(cloud.width * cloud.height);
for (int i = 0; i < cloud.points.size(); ++i)
{
cloud.points[i].x = 1024 * rand() / (RAND_MAX + 0.1f);
cloud.points[i].y = 1024 * rand() / (RAND_MAX + 0.1f);
cloud.points[i].z = 1024 * rand() / (RAND_MAX + 0.1f);
}
pcl::io::savePCDFile("do1.pcd", cloud);
return;
}
void loadPcdFun()//load pcdfile
{
pcl::PointCloud<pcl::PointXYZ> cloud;
if (pcl::io::loadPCDFile("ajaccio_2 - Cloud.pcd", cloud) ==-1)
{
PCL_ERROR("load pcdfile failed!");
}
for (int i = 0; i < cloud.points.size(); ++i)
{
std::cout << cloud.points[i].x << " " << cloud.points[i].y
<< " " << cloud.points[i].z<< std::endl;
}
return;
}
}2.点云字段或数据连接:
void concateFun()//concatenate filed
{
pcl::PointCloud<pcl::PointXYZ> cloud_a;
if (pcl::io::loadPCDFile("do1.pcd", cloud_a) == -1)
{
PCL_ERROR("load pcdfile failed !");
}
pcl::PointCloud<pcl::Normal>cloud_b_normal;
cloud_b_normal.width = 5;
cloud_b_normal.height = 1;
cloud_b_normal.is_dense = false;
cloud_b_normal.points.resize(cloud_b_normal.width * cloud_b_normal.height);
for (int i = 0; i < cloud_b_normal.points.size(); ++i)
{
cloud_b_normal.points[i].normal[0]=1024*rand()/(RAND_MAX+1.0f);
cloud_b_normal.points[i].normal[1]= 1024 * rand() / (RAND_MAX + 1.0f);
cloud_b_normal.points[i].normal[2]= 1024 * rand() / (RAND_MAX + 1.0f);
}
pcl::PointCloud<pcl::PointNormal>cloud_c;
pcl::concatenateFields(cloud_a, cloud_b_normal, cloud_c);
for (int j = 0; j < cloud_c.points.size(); ++j)
{
std::cout << cloud_c.points[j].x << " " << cloud_c.points[j].y
<< " " << cloud_c.points[j].z << " " << cloud_c.points[j].normal[0]
<< " " << cloud_c.points[j].normal[1] << " " << cloud_c.points[j].normal[2] <<
std::endl;
}3.基于OpenNI接口的点云数据获取
#pragma
#include<pcl/io/pcd_io.h>
#include<pcl/point_types.h>
#include<pcl/io/openni2_grabber.h>
#include<pcl/common/time.h>
#include<pcl/visualization/cloud_viewer.h>
//读取深度信息 实时显示3d点云
class SimpleOpenNIProcessor
{
public:
pcl::visualization::CloudViewer viewer;
//construct a cloud viewer,with a window name
SimpleOpenNIProcessor() :viewer("pcl openni viewer")
{
}
//定义回调函数cloub_cb_,获取到数据时对数据进行处理
void cloud_cb_(const pcl::PointCloud<pcl::PointXYZ>::ConstPtr& cloud)
{
if (!viewer.wasStopped())
{
viewer.showCloud(cloud);
}
}
void run()
{
//create a new grabber for OpenNI Devices
pcl::Grabber* m_interface = new pcl::io::OpenNI2Grabber();
//定义回调函数
boost::function<void(pcl::PointCloud<pcl::PointXYZ>::ConstPtr&)> f =
boost::bind(&SimpleOpenNIProcessor::cloud_cb_, this, _1);
//注册回调函数
boost::signals2::connection c = m_interface->registerCallback(f);
//start receive cloud
m_interface->start();
while (!viewer.wasStopped())
{
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
//stop data aquisition
m_interface->stop();
}
};int main()
{
SimpleOpenNIProcessor myViewer;
myViewer.run();
return 0;
}边栏推荐
猜你喜欢

LINQ to SQL (Group By/Having/Count/Sum/Min/Max/Avg操作符)

如何用好建造者模式

面试官:索引为什么会失效?

Oreo域名授权验证系统v1.0.6公益开源版本网站源码

PowerCLi 批量配置NTP

零知识证明——zkSNARK证明体系

【数据挖掘】搜狐公司数据挖掘工程师笔试题

Five Minutes Introductory Text Processing Three Musketeers grep awk sed

After encountering MapStruct, the conversion between PO, DTO and VO objects is no longer handwritten

C语言小笔记+题
随机推荐
QT(42)-QT线程-线程调用槽函数
Uniapp微信雪糕刺客单页小程序源码
【Programming Ideas】
某男子因用本地虚拟机做压测,惨遭字节面试官当场嘲笑
moke、动态图片资源打包显示
c语言小项目(三子棋游戏实现)
Zynq Fpga图像处理之AXI接口应用——axi_lite接口使用
暴雨中的人
[2022 Hangzhou Electric Multi-School 5 1003 Slipper] Multiple Super Source Points + Shortest Path
漫画 | 老板裁掉我两周后,又把我请回去,工资翻番!
adb控制常用命令
【学术相关】清华教授发文劝退读博:我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
Oreo domain name authorization verification system v1.0.6 public open source version website source code
【TypeScript】深入学习TypeScript枚举
工龄10年的测试员从大厂“裸辞”后...
帝国CMS仿核弹头H5小游戏模板/92game帝国CMS内核仿游戏网整站源码
LayaBox---TypeScript---举例
vs Code runs a local web server
Tear down the underlying mechanism of the five JOINs of SparkSQL
遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了