#include\ \n#include\ \n#include\ <pcl/io/ply_io.h>\n#include\ <pcl/point_types.h>\n#include\ <pcl/features/normal_3d.h>\n#include\ <pcl/common/centroid.h>\n#include\ <pcl/search/kdtree.h>\n\n// 边的结构体\nstruct Edge {\n int src; // 边的起始点索引\n int tgt; // 边的目标点索引\n float weight; // 边的权重\n};\n\n// 图的类定义\nclass Graph {\npublic:\n int V; // 图中顶点的数量\n int E; // 图中边的数量\n std::vector edges; // 存储边的向量\n\n // 构造函数\n Graph(int V, int E) {\n this->V = V; \n this->E = E;\n }\n\n // 添加一条边到图中\n void addEdge(int src, int tgt, float weight) {\n Edge edge;\n edge.src = src;\n edge.tgt = tgt;\n edge.weight = weight;\n edges.push_back(edge);\n }\n};\n\n// 欧几里得距离计算函数\nfloat euclideanDistance(const pcl::PointXYZ& p1, const pcl::PointXYZ& p2) {\n float dx = p1.x - p2.x;\n float dy = p1.y - p2.y;\n float dz = p1.z - p2.z;\n return std::sqrt(dxdx + dydy + dz*dz);\n}\n\nint main() {\n std::vector edges; // 存储边的向量\n pcl::PointCloudpcl::PointXYZ::Ptr singlejiedian(new pcl::PointCloudpcl::PointXYZ); // 单个节点的点云\n pcl::PointCloudpcl::PointXYZ::Ptr cloud(new pcl::PointCloudpcl::PointXYZ); // 输入点云\n pcl::io::loadPLYFilepcl::PointXYZ("D:\DIANYUNWENJIANJIA\newOUSHIJULEI_ply.ply", *cloud); // 从PLY文件中读取点云\n\n // 计算点云的质心\n Eigen::Vector4f centroid;\n pcl::compute3DCentroid(*cloud, centroid);\n\n // 计算点云的法线\n pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;\n pcl::PointCloudpcl::Normal::Ptr cloud_normals(new pcl::PointCloudpcl::Normal);\n pcl::search::KdTreepcl::PointXYZ::Ptr tree(new pcl::search::KdTreepcl::PointXYZ);\n ne.setInputCloud(cloud);\n ne.setSearchMethod(tree);\n ne.setKSearch(40);\n ne.compute(*cloud_normals);\n\n // 创建一个图,包含V个顶点和E条边\n int V = cloud->size();\n int E = V * (V - 1) / 2;\n Graph graph(V, E);\n\n // 基于点之间的欧几里得距离计算边的权重\n for (int i = 0; i < V - 1; ++i) {\n const auto& src_point = cloud->points[i];\n for (int j = i + 1; j < V; ++j) {\n const auto& tgt_point = cloud->points[j];\n float distance = euclideanDistance(src_point, tgt_point);\n graph.addEdge(i, j, distance);\n }\n }\n\n // 其他代码...\n return 0;\n}

C++代码:使用PCL库创建点云图

原文地址: https://www.cveoy.top/t/topic/m9nQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录