10.2.10基于惯性矩与偏心率描述子
一、代码
#include <pcl/features/moment_of_inertia_estimation.h>
#include <vector>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
#include <boost/thread/thread.hpp>
#include <iostream>
using namespace std;
using namespace pcl;
int main() {
PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>());
io::loadPCDFile("D:\\pcd\\phone\\ch10.6\\lamppost.pcd",*cloud);
MomentOfInertiaEstimation<PointXYZ> feature_extractor;
feature_extractor.setInputCloud(cloud);
feature_extractor.compute();
vector<float>moment_of_inertia;//存储惯性矩阵的特征向量
vector<float>eccentricity;//存储偏心率的的特征向量
PointXYZ min_point_AABB;//轴对齐包围盒
PointXYZ max_point_AABB;
PointXYZ min_point_OBB;//有向包围盒
PointXYZ max_point_OBB;
PointXYZ position_OBB;
Eigen::Matrix3f rotational_matrix_OBB;
float major_value, middle_value, minor_value;
Eigen::Vector3f major_vector, middle_vector, minor_vector;
Eigen::Vector3f mass_center;
feature_extractor.getMomentOfInertia(moment_of_inertia);
feature_extractor.getEccentricity(eccentricity);
feature_extractor.getAABB<