当前位置: 首页 > news >正文

pcl_案例2 叶片与根茎的分离

要做的是这个样子的

2_1,

        1)随机先下采样

        2)对下采样点云计算obb矩阵

         3)将点云旋转到00点

        4)点云沿x正方向平移

        5)直通滤波去除花底


int main(int argc, char** argv)
{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);// 加载bun0.pcd文件,加载的文件在 PCL的测试数据中是存在的 pcl::io::loadPLYFile("D:\\Desktop\\pacl_learning\\case2plant\\plant.ply", *cloud);//先下采样,数据太大,计算obb矩阵会特别慢。cloud_down只用于伴随计算pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_down = down_sample<pcl::PointXYZ>(cloud,0.02);cout << cloud_down->points.size() << endl;//1,先进行转正pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_trans0 (new pcl::PointCloud<pcl::PointXYZ>);Eigen::Affine3f trans_matrix = get_trans_obb<pcl::PointXYZ>(cloud_down);pcl::transformPointCloud(*cloud_down, *cloud_down, trans_matrix);//移动palant全部到x的00点以上pcl::PointXYZ p_min, p_max;pcl::getMinMax3D(*cloud_down, p_min, p_max);Eigen::Affine3f trans_x = Eigen::Affine3f::Identity();//过0点后往下移了高度的0.2float plant_height = p_max.x - p_min.x;float x_trans = 0 - p_min.x + 0.2;trans_x.translate(Eigen::Vector3f (x_trans,0, 0) );pcl::transformPointCloud(*cloud_down, *cloud_down, trans_x);//把整个点云移过来,并记住这个trans_all,以后可以旋转回去Eigen::Affine3f trans_all = trans_x * trans_matrix;pcl::transformPointCloud(*cloud, *cloud_trans0, trans_all);//show_pointcloud<pcl::PointXYZ>(cloud_trans0, 0.1);//去掉根部pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_trans1(new pcl::PointCloud<pcl::PointXYZ>);pcl::PassThrough<pcl::PointXYZ> pass;pass.setInputCloud(cloud_trans0);pass.setFilterLimits(0, (p_max.x - p_min.x) * 0.7+0.2);pass.setFilterFieldName("x");pass.filter(*cloud_trans1);cout << "花的高度在x轴是——" << plant_height << endl;show_pointcloud<pcl::PointXYZ>(cloud_trans1, 1,0);
}

http://www.dtcms.com/a/354606.html

相关文章:

  • Redis发布订阅:实时消息系统的极简解决方案
  • MyBatis延迟加载
  • 云计算学习100天-第29天
  • Node.js 的模块化规范是什么?CommonJS 和 ES6 模块有什么区别?
  • Python DELL Logo
  • day1 ———C++———变量和字符串的使用
  • AI驱动企业数字化转型:解码未来三年的智能化变革密码
  • STAGEWISE实战指南:从集成到使用的完整解决方案
  • AI在商业领域的多元应用:从写作助手到精准运营,解锁AI商业工具新价值
  • 流程控制语句(3)
  • 操作系统中的死锁是什么意思
  • 农行广西区分行携手广西专精特新商会共探金融赋能专精特新企业新路径
  • 用KPI导航数字化转型:制造企业如何科学评估系统上线成效
  • 流程控制语句(2)
  • Java网络编程(UDP, TCP, HTTP)
  • 【Linux基础知识系列:第一百一十五篇】使用gzip与bzip2进行压缩
  • 从首次测试到采购40个机器人:Junior kühlk如何自动化协作机械臂矩阵
  • Linux学习-基于TCP实现群聊
  • 医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(三)
  • windows下查看别的服务器的端口是否通
  • [光学原理与应用-319]:激光器光路设计的主要输出文件的形式和内容
  • 解构与重构:“真人不露相,露相非真人” 的存在论新解 —— 论 “真在” 的行为表达本质
  • 一文读懂:用PyTorch从零搭建一个Transformer模型
  • (LeetCode 每日一题) 3446. 按对角线进行矩阵排序(矩阵、排序)
  • 读大语言模型08计算基础设施
  • GeoScene Maps 完整入门指南:从安装到实战
  • 《Explanation of Adaptive Platform Design》详细解读
  • 同一个栅格数据,为何在QGIS和ArcGIS Pro中打开后显示的数值范围不同?
  • redis单哨兵模式
  • 单元测试到底是什么?该怎么做?