C++ PCL库:计算点云PLY文件各点到已知直线的距离
#include<pcl\io\ply_io.h> #include<pcl\point_types.h> #include<pcl\common\distances.h> #include<iostream>
int\ main(int\ argc,\ char**\ argv) { //\ 读取点云文件 pcl::PointCloud<pcl::PointXYZ>::Ptr\ cloud(new\ pcl::PointCloud<pcl::PointXYZ>); pcl::PLYReader\ reader; reader.read(argv[1],\ *cloud);
//\ 定义直线的系数
double\ a\ =\ 1.0;\ //\ 直线的a系数
double\ b\ =\ 2.0;\ //\ 直线的b系数
double\ c\ =\ 3.0;\ //\ 直线的c系数
//\ 计算每个点到直线的距离
for\ (const\ auto&\ point\ :\ cloud->points\)
{
double\ distance\ =\ pcl::pointToLineDistance\(point,\ a,\ b,\ c\);
std::cout\ <<\ "Point:\ (\"\ <<\ point.x\ <<\ "\,\ "\ <<\ point.y\ <<\ "\,\ "\ <<\ point.z\ <<\ "\) "\
<<\ "Distance\ to\ line:\ "\ <<\ distance\ <<\ std::endl;
}
return\ 0;
}
请将上述代码保存为.cpp文件,然后使用CMake进行编译和链接,生成可执行文件。在命令行中执行可执行文件时,需要指定PLY文件的路径作为命令行参数。例如:
./distance_to_line\ example.ply
请注意,上述代码假设点云中的点类型为pcl::PointXYZ,如果点云中的点类型不同,请根据实际情况进行修改。另外,直线的系数a、b和c需要根据实际情况进行设置。
原文地址: https://www.cveoy.top/t/topic/pwLQ 著作权归作者所有。请勿转载和采集!