视觉slam14讲VO前端设计中 std::min_element和lambda表达式的运用讲解

float min_dis = std::min_element (matches.begin(), matches.end(),[] ( const cv::DMatch& m1, const cv::DMatch& m2 )
{
return m1.distance < m2.distance;
} )->distance;

这就是书中使用了std::min_element和lambda表达式的程序,这段程序具体实现的功能是找到matches这个用来存放匹配的关键点的描述子中描述子的最小的距离,然后赋值给min_dis,matches是存放Dmatch这个描述子类的容器,所有最后会有->distance表示赋给min_dis的是距离。

返回容器或者数组中最大值和最小值。max/min_element(first,end,cmp);其中cmp为可选择参数

[] ( const cv::DMatch& m1, const cv::DMatch& m2 ) 
{ 
    return m1.distance < m2.distance; 
}

这里的lamda函数相当于:

bool cmp(const cv::DMatch& m1, const cv::DMatch& m2)
{
    return m1.distance < m2.distance; 
}

实际的功能就是将matches中的所有描述子进行了个排序,然后min_element取了第一个及最小的那个的distance赋给了min_dis

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值