FLANN

FLANN 库,包含 KNN 算法。众多工程(例如 OpenCV)使用了 FLANN,这里单独介绍这个库,方便以后单独使用。

由官方 Latex 编译的文档链接,免费的。

安装

ubuntu 下直接通过命令行

sudo apt install libflann1.8 libflann1.8-dev

HDF5

FLANN 库例程使用了 HDF5 库,但是引用有些问题。编译时,头文件路径需要包含 /usr/include/hdf5/serial/。需要链接库 hdf5_serial_hlhdf5_serial

使用

数据类型

基本的数据类型是Matrix。参考其构造函数,只需要传入连续的数据块并指定类型,行,列即可。传入 OpenCV 或者 Eigen 中的矩阵的指针。

Matrix(T* data_, size_t rows_, size_t cols_, size_t stride_ = 0) :Matrix_(data_, rows_, cols_, flann_datatype_value<T>::value, stride_){if (stride==0) stride = sizeof(T)*cols;}

FLANN::Index

// 构造函数
Index(const Matrix<ElementType>& features, const IndexParams& params, Distance distance = Distance() )// Example
Index<L2<float> > index(dataset, flann::KDTreeIndexParams(4));

L2<float> 指定距离函数和类型。构建时传入数据集和参数。关于 Distance 和 Parameter 请参考官方文档。

features 维度是 (N, C),且是 RowMajor

ElementType* getPoint(size_t point_id) 方法根据 point_id 返回指向数据点的指针。point_id 按照dataset添加的顺序确定。

index.getPoint(0) // 指向(0, 0)
index.getPoint(0)+1 // 指向(0, 1)
index.getPoint(1) // 指向(1, 0)

KNN

使用函数 flann::Index::knnSearch,具体使用方法参考 Example。配置搜索的线程数,精度参考 SearchParameters 参数。

FLANN 还有 RadiusSearch 和 KMeans 算法,参考官方文档即可。

FLANN C++ 使用相关推荐

  1. PCL-1.8.1从源码搭建开发环境二(FLANN库的编译)

    原文首发于微信公众号「3D视觉工坊」,PCL-1.8.1从源码搭建开发环境二(FLANN库的编译) 首先,快速近似最近邻搜索库FLANN-Fast Library for Approximate Ne ...

  2. FLANN特征匹配(Python)

    输入图片 算法输出图 可以看到,这里的算法效果比之前的ORB算法要好很多了! 可以点击来访问一下,就知道差别了~ ORB特征匹配(python) 代码 import cv2 from matplotl ...

  3. 学习OpenCV——Surf(特征点篇)flann快速最近邻搜索算法

    Surf(Speed Up Robust Feature) Surf算法的原理                                                             ...

  4. 【计算机视觉】OpenCV的最近邻开源库FLANN

    FLANN介绍 FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库.不但实现了一系列查找算法,还包含了 ...

  5. OpenCV之feature2d 模块. 2D特征框架(2)特征描述 使用FLANN进行特征点匹配 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体 平面物体检测

    特征描述 目标 在本教程中,我们将涉及: 使用 DescriptorExtractor 接口来寻找关键点对应的特征向量. 特别地: 使用 SurfDescriptorExtractor 以及它的函数  ...

  6. 使用FLANN进行特征点匹配

    目标 在本教程中我们将涉及以下内容: 使用 FlannBasedMatcher 接口以及函数 FLANN 实现快速高效匹配( 快速最近邻逼近搜索函数库(Fast Approximate Nearest ...

  7. OpenCV SURF FLANN匹配单应性的实例(附完整代码)

    OpenCV SURF FLANN匹配单应性的实例 OpenCV SURF FLANN匹配单应性的实例 OpenCV SURF FLANN匹配单应性的实例 #include <iostream& ...

  8. OpenCV SURF FLANN匹配的实例(附完整代码)

    OpenCV SURF FLANN匹配的实例 OpenCV SURF FLANN匹配的实例 OpenCV SURF FLANN匹配的实例 #include <iostream> #incl ...

  9. OpenCV FLANN在数据集中搜索查询图片的实例(附完整代码)

    OpenCV FLANN在数据集中搜索查询图片的实例 OpenCV FLANN在数据集中搜索查询图片的实例 OpenCV FLANN在数据集中搜索查询图片的实例 #include <iostre ...

  10. OpenCV与FLANN的功能匹配

    OpenCV与FLANN的功能匹配 与FLANN的功能匹配 目标 理论 代码 结果 与FLANN的功能匹配 目标 在本教程中,您将学习如何: 使用cv :: FlannBasedMatcher界面,以 ...

最新文章

  1. NetCore 2.0 MVC入门之 Startup 配置
  2. 带Spring Boot的GWT
  3. python tkinter 窗口禁止编辑_python tkinter禁用文本窗口中的换行
  4. 纽交所发言人就“GME事件”表态:采用先进技术监督市场
  5. POJ3178 计算几何+DP
  6. 华为云服务器怎样让网站显示不出来,云服务器网页不显示图片
  7. RTC硬件时钟设置修改【转】
  8. Delphi 与 DirectX 之 DelphiX(94): TDIB.DrawAdditive();
  9. Mac 基本教程和vim + Awesome Mac
  10. Mac词典扩充、本地化
  11. 知识付费平台现状:供应商、购买者议价能力较
  12. python3  类中方法的调用
  13. java类型转换异常处理_类型转换中的错误处理
  14. python:实现base64加密和base64解密算法(附完整源码)
  15. 在Word中上下两张表格合并不了的解决办法
  16. flash 在firebox/IE中 提示安装 浏览器是否有flash插件
  17. 最新版NASA官方网站数据下载流程——以MODIS数据演示为例
  18. Effective JavaScript Item 23 永远不要修改arguments对象
  19. uni-app实现PDA的离线语音(二)MT-TTS离线语音合成插件下载及集成
  20. 推荐一些能提升工作幸福度的小工具

热门文章

  1. 免费的天气API接口
  2. VideoPose3D:基于视频的3D人体关键点检测
  3. 将汉子转化为拼音的js插件
  4. Android Studio 连接不上华为手机
  5. jzoj 1594: 【USACO】The Chivalrous Cow(骑士牛)( 待加入)
  6. 【Android 10 源码】healthd 模块 HAL 1.0 分析
  7. 如何关闭windows电脑里的休眠
  8. 诺基亚WP7手机或10月发布 搭载新版系统
  9. ios 页面即将消失_20个即将推出的页面介绍及如何正确处理它们
  10. 【深度学习】ONNX 模型文件修改节点的名称,修改输入名称,修改输出名称