资源简介

PCL最小包围盒完整代码,实现了2D/3D点云最小包围盒的实现. PCL最小外接矩形完整代码,实现了2D/3D点云最小外接矩形的实现

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


using namespace std;
typedef pcl::PointXYZ PointType;
typedef struct myPointType  
{  
    double x;  //mm world coordinate x  
    double y;  //mm world coordinate y  
    double z;  //mm world coordinate z  
int num;   //point num
}; 

// Get N bits of the string from back to front.
char* Substrend(char*strint n)
{
char *substr=(char*)malloc(n+1);
int length=strlen(str);
if (n>=length)
{
strcpy(substrstr);
return substr;
}
int k=0;
for (int i=length-n;i {
substr[k]=str[i];
k++;
}
substr[k]=‘\0‘;
return substr;
}

int main(int argc char **argv)
{
// create point cloud  
pcl::PointCloud::Ptr cloud(new pcl::PointCloud());

// load data
char* fileType;
if (argc>1)
{
fileType = Substrend(argv[1]3);
}
if (!strcmp(fileType“pcd“))
{
     // load pcd file
pcl::io::loadPCDFile(argv[1] *cloud);
}
else if(!strcmp(fileType“txt“))
{
// load txt data file
int number_Txt;
myPointType txtPoint; 
vector points; 
FILE *fp_txt; 
fp_txt = fopen(argv[1] “r“);  
if (fp_txt)  
{  
    while (fscanf(fp_txt “%lf %lf %lf“ &txtPoint.x &txtPoint.y &txtPoint.z) != EOF)  
    {  
        points.push_back(txtPoint);  
    }  
}  
else  
    std::cout << “txt数据加载失败!“ << endl;  
number_Txt = points.size();  

cloud->width = number_Txt;  
cloud->height = 1;     
cloud->is_dense = false;  
cloud->points.resize(cloud->width * cloud->height);  
  
for (size_t i = 0; i < cloud->points.size(); ++i)  
{  
    cloud->points[i].x = points[i].x;  
    cloud->points[i].y = points[i].y;  
    cloud->points[i].z = 0;  
}  
}
else 
{
std::cout << “please input data file name“< return 0;
}

// start calculating time
    pcl::StopWatch time;


    Eigen::Vector4f pcaCentroid;
    pcl::compute3DCentroid(*cloud pcaCentroid);
    Eigen::Matrix3f covariance;
    pcl::computeCovarianceMatrixNormalized(*cloud pcaCentroid covariance);
    Eigen::SelfAdjointEigenSolver eigen_solver(covariance Eigen::ComputeEigenvectors);
    Eigen::Matrix3f eigenVectorsPCA = eigen_solver.eigenvectors();
    Eigen::Vector3f 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-21 03:16  Rectangular_Bounding_Box\
     文件        6079  2018-09-20 07:41  Rectangular_Bounding_Box\scan.pcd
     文件        6789  2018-09-20 07:37  Rectangular_Bounding_Box\scan.txt
     文件     2547006  2018-04-03 16:17  Rectangular_Bounding_Box\milk_cartoon_all_small_clorox.pcd
     文件       92940  2018-04-03 16:17  Rectangular_Bounding_Box\milk.pcd
     文件         473  2018-09-20 07:04  Rectangular_Bounding_Box\CMakeLists.txt
     文件       10344  2018-09-21 03:16  Rectangular_Bounding_Box\rectangular_bounding_box.cpp
     目录           0  2018-09-21 07:32  Rectangular_Bounding_Box\build\

评论

共有 条评论