#include\ <pcl\point_types.h>\n#include\ <pcl\io\ply_io.h>\n#include\ <pcl\visualization\pcl_visualizer.h>\n#include\ <pcl\features\moment_of_inertia_estimation.h>\n\nint\ main(int\ argc, char**\ argv)\n{\n // 读取点云数据\n pcl::PointCloudpcl::PointXYZ::Ptr\ cloud(new\ pcl::PointCloudpcl::PointXYZ);\n pcl::PLYReader\ reader;\n reader.read("input_cloud.ply", *cloud);\n\n // 计算obb包围盒\n pcl::MomentOfInertiaEstimationpcl::PointXYZ\ feature_extractor;\n feature_extractor.setInputCloud(cloud);\n feature_extractor.compute();\n\n pcl::PointXYZ\ min_point, max_point;\n feature_extractor.getOBB(min_point, max_point);\n\n // 计算包围盒的长宽高\n double\ obb_length\ =\ max_point.x\ -\ min_point.x;\n double\ obb_width\ =\ max_point.y\ -\ min_point.y;\n double\ obb_height\ =\ max_point.z\ -\ min_point.z;\n\n std::cout\ <<\ "OBB Length:\ "\ <<\ obb_length\ <<\ std::endl;\n std::cout\ <<\ "OBB Width:\ "\ <<\ obb_width\ <<\ std::endl;\n std::cout\ <<\ "OBB Height:\ "\ <<\ obb_height\ <<\ std::endl;\n\n // 可视化点云和obb包围盒\n pcl::visualization::PCLVisualizer\ viewer("Point Cloud Viewer");\n viewer.setBackgroundColor(0.0, 0.0, 0.0);\n viewer.addPointCloudpcl::PointXYZ(cloud, "cloud");\n\n // 添加obb包围盒\n viewer.addCube(min_point.x, max_point.x, min_point.y, max_point.y, min_point.z, max_point.z, 1.0, 0.0, 0.0, "obb");\n\n while\ (!viewer.wasStopped())\n {\n viewer.spinOnce();\n }\n\n return\ 0;\n}

C++ 点云PLY文件OBB包围盒计算与可视化 - PCL库

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

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