基于分割的目标姿态识别

基于分割的方法去识别目标物的姿态

/*
本段代码主要实现的功能:
1.去除平面
2.去除其他杂乱点云
3.对目标进行有向包围盒计算
4.计算目标重心点;计算旋转矩阵;计算欧拉角ZYX;即先绕Z轴旋转角度,再绕新的Y轴旋转角度,最后绕新的X轴旋转角度

*/

/*
本段代码主要实现的功能:
    1.去除平面
    2.去除其他杂乱点云
    3.对目标进行有向包围盒计算
    4.计算目标重心点;计算旋转矩阵;计算欧拉角ZYX;即先绕Z轴旋转角度,再绕新的Y轴旋转角度,最后绕新的X轴旋转角度

*/

#include <pcl/ModelCoefficients.h>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/features/normal_3d.h>
#include <pcl/kdtree/kdtree.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/segmentation/extract_clusters.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <iostream>

#include <string>
#include <vector>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/common/common.h>
#include <vtkAutoInit.h>
#include <Eigen/Core>
#include <pcl/common/transforms.h>
#include <pcl/features/moment_of_inertia_estimation.h>

int color_bar[][3]=
{
   
        {
    255,0,0},
        {
    0,255,0 },
        {
    0,0,255 },
        {
    0,255,255 },
        {
    255,255,0 },
        {
    255,255,255 },
        {
    255,0,255 }
};

//写出一个函数,将无用点云手动删除
pcl::PointCloud<pcl::PointXYZ>::Ptr shanchu(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud)//pcl::PointCloud<pcl::PointXYZ>::Ptr
{
   
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_chuli;
    pcl::PointCloud<pcl::PointXYZ>::iterator index;
    index=cloud->begin();

    for (index=cloud->begin();index!=cloud->end();index++)
    {
   

        //cout<<cloud->points[nIndex].x<<endl;
         if( (index->_PointXYZ::x>-0.3364)&&(index->_PointXYZ::x<0.4071)
                 &&(index->_PointXYZ::y>-0.191)&&(index->_PointXYZ::y<0.1826)
                 &&(index->_PointXYZ::z>0.68)&&(index->_PointXYZ::z<0.93) )
         {
   
             //std::cout<<"x "<<index->_PointXYZ::x<<"y "<<index->_PointXYZ::y<<"z "<<index->_PointXYZ::z<< std::endl;
             continue ;
         }
         else
         {
   
             //cloud->erase(index);
             index->_PointXYZ::x=0;
             index->_PointXYZ::y=0;
             index->_PointXYZ::z=0;
         }
    }
    cloud_chuli=cloud;
    /*
    //--show-----
    pcl::visualization::PCLVisualizer viewer("baolichudian");
    viewer.addPointCloud(cloud, "scene_cloud");//可视化场景点云
    while (!viewer.wasStopped())
    {
            viewer.spinOnce(100);
    }
    //------------
    */
  return cloud;
}
pcl::visualization::PCLVisualizer::Ptr viewer_left(new pcl::visualization::PCLVisualizer("segmention")); //left object
pcl::visualization::PCLVisualizer::Ptr viewer_right(new pcl::visualization::PCLVisualizer("segmention"));//right object
boost::shared_ptr<pcl::visualization::PCLVisualizer> obb(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud)//针对所有点云OBB有向包围盒  pcl::visualization::PCLVisualizer::Ptr
{
   
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyd__

你的打赏和鼓励我会珍惜!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值