我没有找到如何使用 pcl 进行 2D RANSAC 线性回归。我猜想有些方法没有实现。当我添加
pcl::SACSegmentation<pcl::PointXY> segmentation
时,代码可以编译,但出现链接器错误:
/usr/bin/ld: lib.so: undefined reference to `pcl::SACSegmentation<pcl::PointXY>::segment(pcl::PointIndices&, pcl::ModelCoefficients&)'
/usr/bin/ld: lib.so: undefined reference to `pcl::SACSegmentation<pcl::PointXY>::initSAC(int)'
/usr/bin/ld: lib.so: undefined reference to `pcl::SACSegmentation<pcl::PointXY>::initSACModel(int)'
collect2: error: ld returned 1 exit status
我的解决方法是使用
pcl::SACSegmentation<pcl::PointXYZ> segmentation
并设置 z=0,但这是将点从 2D 转换为 3D 的额外步骤。
使用
pcl::PointXYZ
并将 z 设置为 0 是正确的解决方案。 SACMODEL_LINE
(或SampleConsensusModelLine
,SACSegmentation
内部使用的类)适用于 3D 和 2D 中的线条。但对于 2D,它仍然需要一个 z 坐标(设置为 0)。
您会收到链接器错误,因为 SACSegmentation
未实例化 pcl::PointXY
(请参阅源代码中的 sac_segmentation.cpp
)。
我也有同样的问题。你解决了吗?