資源簡(jiǎn)介
PCL最小包圍盒完整代碼,實(shí)現(xiàn)了2D/3D點(diǎn)云最小包圍盒的實(shí)現(xiàn).
PCL最小外接矩形完整代碼,實(shí)現(xiàn)了2D/3D點(diǎn)云最小外接矩形的實(shí)現(xiàn)

代碼片段和文件信息
#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數(shù)據(jù)加載失敗!“?< 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?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?
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????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\
評(píng)論
共有 條評(píng)論