如何正确使用此功能"pcl::geometry::squaredDistance"



如何获取PCL中2个点之间的距离?我知道PCL中有一个函数pcl::geometry::squaredDistance,但当我调用这个函数时,我得到了这个错误

/usr/include/pcl-1.7/pcl/common/geometry.h: In instantiation of ‘float pcl::geometry::squaredDistance(const PointT&, const PointT&) [with PointT = pcl::PointXYZ]’:
error: no match for ‘operator-’ (operand types are ‘const pcl::PointXYZ’ and ‘const pcl::PointXYZ’)
Eigen::Vector3f diff = p1 -p2;
^

这是显示我如何使用功能的代码

pcl::PointXYZ p1(3, 4, 5);
pcl::PointXYZ p2(0, 0, 0);
double d = pcl::geometry::squaredDistance(p1, p2);
std::cout << d << std::endl;

如有任何帮助,我们将不胜感激。

这是PCL 1.7中的一个错误(已在链接提交中修复(。

这是一个简单的功能,所以你不必更新到PCL:的新版本

返回2个点之间的欧氏距离

template <typename PointT> inline float 
distance (const PointT& p1, const PointT& p2)
{
Eigen::Vector3f diff = p1.getVector3fMap () - p2.getVector3fMap ();
return (diff.norm ());
}

返回2个点之间的平方欧几里得距离(计算速度比真实欧几里得距离快(

template<typename PointT> inline float 
squaredDistance (const PointT& p1, const PointT& p2)
{
Eigen::Vector3f diff = p1.getVector3fMap () - p2.getVector3fMap ();
return (diff.squaredNorm ());
}

最新更新