ch04——4.3.4连接两个点云中的字段或数据形成新点云

进行连接前要保证两个数据中的字段类型和维度相同,数目一样。如:点云a是n个点的xyz点,点云b是n个点的rgb点,则形成c点云是n个点xyzrgb类型。
1.代码

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <iostream>
using namespace std;
using namespace pcl;
int main() {//三个输入:cloud_a, cloud_b,n_cloud_b//两个输出:cloud_c,p_n_cloud_cPointCloud<pcl::PointXYZ>cloud_a, cloud_b, cloud_c;PointCloud<pcl::Normal>n_cloud_b;//存储进行连接时normal点云PointCloud<pcl::PointNormal>p_n_cloud_c;//创建点云cloud_a.width = 3;//点云个数为3//都设置为无序点云cloud_a.height = cloud_b.height = n_cloud_b.height = 1;cloud_a.points.resize(cloud_a.width*cloud_a.height)cloud_b.width = 2;//点云个数为2cloud_b.points.resize(cloud_b.width*cloud_b.height);n_cloud_b.width = 3;//如果是链接xyz与normal则生成3个法线n_cloud_b.points.resize(n_cloud_b.width*n_cloud_b.height);//以下循环生成无序点云,填充定义上面两种类型点云对象for (size_t i = 0; i < cloud_a.points.size(); i++){//cloud_a始终产生3个点cloud_a.points[i].x = 1024 * rand() / (RAND_MAX+1.0f);cloud_a.points[i].y = 1024 * rand() / (RAND_MAX+1.0f);cloud_a.points[i].z = 1024 * rand() / (RAND_MAX+1.0f);}for (size_t i = 0; i < cloud_b.points.size(); i++){    //cloud_b两个点作为xyz数据cloud_b.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);cloud_b.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);cloud_b.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);}for (size_t i = 0; i < n_cloud_b.points.size(); i++){//如果xyz+normal=xyznormal则n_cloud_b用三个点作为normal数据n_cloud_b.points[i].normal[0] = 1024 * rand() / (RAND_MAX + 1.0f);n_cloud_b.points[i].normal[1] = 1024 * rand() / (RAND_MAX + 1.0f);n_cloud_b.points[i].normal[2] = 1024 * rand() / (RAND_MAX + 1.0f);}cout << "cloud_a:" << endl;for (size_t i = 0; i < cloud_a.points.size(); i++){cout << " " << cloud_a.points[i].x << " " << cloud_a.points[i].y<< " " << cloud_a.points[i].z << endl;}cout << "cloud_b" << endl;for (size_t i = 0; i < cloud_b.points.size(); i++){cout << " " << cloud_b.points[i].x << " " << cloud_b.points[i].y<< " " << cloud_b.points[i].z << endl;}cout << " n_cloud_b" << endl;for (size_t i = 0; i < n_cloud_b.points.size(); i++){cout << " " << n_cloud_b.points[i].normal[0] << " " << n_cloud_b.points[i].normal[1]<< " " << n_cloud_b.points[i].normal[2] << endl;}//拷贝点云数据cloud_c = cloud_a;cloud_c += cloud_b;//点云连接cout << "cloud_c=cloud_a+cloud_b" << endl;for (size_t i = 0; i < cloud_c.points.size(); i++){cout << " " << cloud_c.points[i].x << " " << cloud_c.points[i].y<< " " << cloud_c.points[i].z << endl;}//点云字段连接concatenateFields(cloud_a, n_cloud_b, p_n_cloud_c);cout << "p_n_cloud_c=cloud_a+n_cloud_b" << endl;for (size_t i = 0; i < p_n_cloud_c.points.size(); i++){cout << " " << p_n_cloud_c.points[i].x << " " << p_n_cloud_c.points[i].y<< " " << p_n_cloud_c.points[i].z << " " <<p_n_cloud_c.points[i].normal[0] << " " << p_n_cloud_c.points[i].normal[1]<< " " << p_n_cloud_c.points[i].normal[2] << endl;}return 0;}

2.显示

ch04——4.3.4连接两个点云中的字段或数据形成新点云相关推荐

  1. 连接两个点云中的字段或数据形成新点云以及Opennni Grabber初识

    (1)学习如何连接两个不同点云为一个点云,进行操作前要确保两个数据集中字段的类型相同和维度相等,同时了解如何连接两个不同点云的字段(例如颜色 法线)这种操作的强制约束条件是两个数据集中点的数目必须一样 ...

  2. 连接两个点云的字段或数据形成新点云

    学习如何连接两个不同点云为一个点云,进行操作前要确保两个数据集中字段的类型相同和维度相等,同时了解如何连接两个不同点云的字段(例如颜色 法线)这种操作的强制约束条件是两个数据集中点的数目必须一样,例如 ...

  3. C++入门经典-例6.14-通过指针连接两个字符数组

    1:字符数组是一个一维数组,引用字符数组的指针为字符指针,字符指针就是指向字符型内存空间的指针变量. char *p; char *string="www.mingri.book" ...

  4. 【问题收录】Ubuntu14.04连接两个双显示器失败的解决方案

    如果你没有装独立显卡那么这个问题应该是不存在的. 然后我就是钱多没有地方花,所以自作孽不可活,安了个独立显卡之后各种问题可以把我纠结致死.其实我觉得你要不是做什么图形处理,人脸识别要GPU配置很高的话 ...

  5. R语言ggplot2可视化箱图、配置抖动数据点(jitter points)避免数据点互相覆盖、并使用线条(line)连接两个箱图中不同分组成对的数据点(jitter on Boxplots)

    R语言ggplot2可视化箱图.配置抖动数据点(jitter points)避免数据点互相覆盖.并使用线条(line)连接两个箱图中不同分组成对的数据点(Connecting Paired Point ...

  6. 计算机安装两个键盘会怎样,外设门诊:一个键盘能否连接两个接收器?

    1一个键盘能否连接两个接收器 [中关村在线键鼠频道原创] 用户及玩家在日常使用键鼠外设产品时,经常会出现这样或那样的问题.小到驱动下载安装,大到更换线材.MOD改造等等,如果您想得到及时丰富的解答,请 ...

  7. python2.7可以同时连接两个数据库吗

    一.前言 这个问题是博主在开发的时候,遇到需要在一个脚本里面连接两个数据库的需求,当时对于python2.7不是很熟悉,所以想要在网上搜一下python2.7是否可以同时连接两个数据库,只是并没有一个 ...

  8. Leetcode69场双周赛-第三题5962. 连接两字母单词得到的最长回文串

    5962. 连接两字母单词得到的最长回文串 题目描述 解题思路和解题代码 定义map和sameMap.如果两个字母一样,就看sameMap里面有没有记录,有的话把该记录取出来,结果总数+4,没有的话, ...

  9. 如何连接两个窗口JAVA_java-如何连接两个ArrayLists?

    java-如何连接两个ArrayLists? 我有两个大小相等的ArrayLists. 列表1由10个名称组成,列表2由其电话号码组成. 我想将名称和号码合并为一个ArrayList.该怎么做? 7个 ...

最新文章

  1. Matlab与数据结构 -- 搜索向量或矩阵中非零元素的位置
  2. 文件控制 fcntl函数具体解释
  3. 【转】Java虚拟机(JVM)以及跨平台原理
  4. bool,_Bool和BOOL的区别
  5. [詹兴致矩阵论习题参考解答]习题3.7
  6. Linux的进程优先级NI和PR
  7. java中使用json import_JAVA中使用JSON
  8. [重要公告] 关于禁止发布Windows系统及非法激活软件的通知
  9. 美国本科申请Essay的写作注意事项
  10. MySQL双主高可用架构之MMM实战
  11. 微型计算机控制是微机原理吗,微型计算机控制技术学习心得
  12. Android AAB增量安装
  13. 线性二次型调节器(LQR)原理详解
  14. html水平分割线虚线代码,CSS分割线虚线代码
  15. 360打开html加载不出来,360浏览器显示正在解析主机打不开网页如何处理
  16. iOS H5 history.back() 返回上一路由 页面白屏
  17. Python的列表操作
  18. 曾仕强:人生只做三件事
  19. 艾默生流量计基础知识
  20. php 自带模板标记,关于模板标记的9篇文章推荐

热门文章

  1. Linux制作网页用什么,linux网页应该怎样制作?
  2. 攻防演习防御体系构建之第三篇之建立实战化的安全体系
  3. Linux启动关闭服务
  4. oppor17山寨机的特点_OPPO R17这款机器,它的表现究竟如何呢?
  5. softmax激活函数与softmax损失函数
  6. 数据科学中费米估算法的应用:如何估算一个城市加油站的数量?
  7. 第十五课、用户界面与业务逻辑的分离------------------狄泰软件学院
  8. jquery each循环
  9. 今日头条这次瞄准了爱奇艺,只因张一鸣内心住着小马哥
  10. java实现hex编辑器_2019-07-29 十六进制编辑器Hexedit使用手册