OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
未找到匹配项
cv::FlannBasedMatcher 类参考

基于 FLANN 的描述符匹配器。更多…

#include <opencv2/features2d.hpp>

cv::FlannBasedMatcher 协作图

公共成员函数

 FlannBasedMatcher (const Ptr< flann::IndexParams > &indexParams=makePtr< flann::KDTreeIndexParams >(), const Ptr< flann::SearchParams > &searchParams=makePtr< flann::SearchParams >())
 
虚函数 void add (InputArrayOfArrays descriptors) CV_OVERRIDE
 添加描述符以训练 CPU(trainDescCollectionis) 或 GPU(utrainDescCollectionis) 描述符集合。
 
虚函数 void clear () CV_OVERRIDE
 清除训练描述符集合。
 
虚函数 CV_NODISCARD_STD Ptr< DescriptorMatcherclone (bool emptyTrainData=false) const CV_OVERRIDE
 克隆匹配器。
 
虚函数 bool isMaskSupported () const CV_OVERRIDE
 如果描述符匹配器支持掩码允许的匹配,则返回 true。
 
虚函数 void read (const FileNode &) CV_OVERRIDE
 从文件存储中读取算法参数。
 
虚函数 void train () CV_OVERRIDE
 训练描述符匹配器。
 
虚函数 void write (FileStorage &) const CV_OVERRIDE
 将算法参数存储在文件存储中。
 
- 从 cv::DescriptorMatcher 继承的公共成员函数
虚函数 ~DescriptorMatcher ()
 
虚函数 bool empty () const CV_OVERRIDE
 如果两个集合中都没有训练描述符,则返回 true。
 
const std::vector< Mat > & getTrainDescriptors () const
 返回指向训练描述符集合 trainDescCollection 的常量链接。
 
void knnMatch (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArray mask=noArray(), bool compactResult=false) const
 为查询集中的每个描述符查找 k 个最佳匹配。
 
void knnMatch (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArrayOfArrays masks=noArray(), bool compactResult=false)
 
void match (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< DMatch > &matches, InputArray mask=noArray()) const
 为查询集中的每个描述符查找最佳匹配。
 
void match (InputArray queryDescriptors, std::vector< DMatch > &matches, InputArrayOfArrays masks=noArray())
 
void radiusMatch (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArray mask=noArray(), bool compactResult=false) const
 对于每个查询描述符,查找不超过指定距离的训练描述符。
 
void radiusMatch (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArrayOfArrays masks=noArray(), bool compactResult=false)
 
void read (const String &fileName)
 
void write (const Ptr< FileStorage > &fs, const String &name) const
 
void write (const String &fileName) const
 
void write (FileStorage &fs, const String &name) const
 
- 从 cv::Algorithm 继承的公共成员函数
 Algorithm ()
 
虚函数 ~Algorithm ()
 
虚函数 String getDefaultName () const
 
虚函数 void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
void write (FileStorage &fs, const String &name) const
 

静态公共成员函数

static Ptr< FlannBasedMatchercreate ()
 
- 继承自 cv::DescriptorMatcher 的静态公共成员函数
static Ptr< DescriptorMatchercreate (const DescriptorMatcher::MatcherType &matcherType)
 
static Ptr< DescriptorMatchercreate (const String &descriptorMatcherType)
 创建具有默认参数(使用默认构造函数)的给定类型的描述符匹配器。
 
- 继承自 cv::Algorithm 的静态公共成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件中加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点读取算法。
 

保护成员函数

虚函数 void knnMatchImpl (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArrayOfArrays masks=noArray(), bool compactResult=false) CV_OVERRIDE
 
虚函数 void radiusMatchImpl (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArrayOfArrays masks=noArray(), bool compactResult=false) CV_OVERRIDE
 
- 继承自 cv::DescriptorMatcher 的保护成员函数
void checkMasks (InputArrayOfArrays masks, int queryDescriptorsCount) const
 
- 继承自 cv::Algorithm 的保护成员函数
void writeFormat (FileStorage &fs) const
 

静态保护成员函数

static void convertToDMatches (const DescriptorCollection &descriptors, const Mat &indices, const Mat &distances, std::vector< std::vector< DMatch > > &matches)
 
- 继承自 cv::DescriptorMatcher 的静态保护成员函数
static CV_NODISCARD_STD Mat clone_op (Mat m)
 
static bool isMaskedOut (InputArrayOfArrays masks, int queryIdx)
 
static bool isPossibleMatch (InputArray mask, int queryIdx, int trainIdx)
 

保护属性

int addedDescCount
 
Ptr< flann::Index > flannIndex
 
Ptr< flann::IndexParams > indexParams
 
DescriptorCollection mergedDescriptors
 
Ptr< flann::SearchParams > searchParams
 
- 继承自 cv::DescriptorMatcher 的保护属性
std::vector< MattrainDescCollection
 来自训练图像的描述符集合。
 
std::vector< UMatutrainDescCollection
 

其他继承成员

- 继承自 cv::DescriptorMatcher 的公共类型
枚举  MatcherType {
  FLANNBASED = 1 ,
  BRUTEFORCE = 2 ,
  BRUTEFORCE_L1 = 3 ,
  BRUTEFORCE_HAMMING = 4 ,
  BRUTEFORCE_HAMMINGLUT = 5 ,
  BRUTEFORCE_SL2 = 6
}
 

详细描述

基于Flann的描述符匹配器。

此匹配器在训练描述符集合上训练 cv::flann::Index,并调用其最近邻搜索方法来查找最佳匹配。因此,与蛮力匹配器相比,在匹配大型训练集合时,此匹配器可能更快。FlannBasedMatcher 不支持屏蔽描述符集的允许匹配,因为 flann::Index 不支持此功能。

构造函数和析构函数文档

◆ FlannBasedMatcher()

cv::FlannBasedMatcher::FlannBasedMatcher ( const Ptr< flann::IndexParams > & indexParams = makePtr< flann::KDTreeIndexParams >(),
const Ptr< flann::SearchParams > & searchParams = makePtr< flann::SearchParams >() )
Python
cv.FlannBasedMatcher([, indexParams[, searchParams]]) -> <FlannBasedMatcher 对象>

成员函数文档

◆ add()

virtual void cv::FlannBasedMatcher::add ( InputArrayOfArrays descriptors)
virtual

添加描述符以训练 CPU(trainDescCollectionis) 或 GPU(utrainDescCollectionis) 描述符集合。

如果集合不为空,则将新的描述符添加到现有的训练描述符。

参数
descriptors待添加的描述符。每个 descriptors[i] 都是来自同一训练图像的一组描述符。

重实现自 cv::DescriptorMatcher

◆ clear()

virtual void cv::FlannBasedMatcher::clear ( )
virtual

清除训练描述符集合。

重实现自 cv::DescriptorMatcher

◆ clone()

virtual CV_NODISCARD_STD Ptr< DescriptorMatcher > cv::FlannBasedMatcher::clone ( bool emptyTrainData = false) const
virtual

克隆匹配器。

参数
emptyTrainData如果 emptyTrainData 为 false,则该方法创建对象的深拷贝,即复制参数和训练数据。如果 emptyTrainData 为 true,则该方法创建具有当前参数但训练数据为空的对象副本。

实现 cv::DescriptorMatcher

◆ convertToDMatches()

static void cv::FlannBasedMatcher::convertToDMatches ( const DescriptorCollection & descriptors,
const Mat & indices,
const Mat & distances,
std::vector< std::vector< DMatch > > & matches )
staticprotected

◆ create()

static Ptr< FlannBasedMatcher > cv::FlannBasedMatcher::create ( )
static
Python
cv.FlannBasedMatcher.create() -> retval
cv.FlannBasedMatcher_create() -> retval

◆ isMaskSupported()

virtual bool cv::FlannBasedMatcher::isMaskSupported ( ) const
virtual

如果描述符匹配器支持掩码允许的匹配,则返回 true。

实现 cv::DescriptorMatcher

◆ knnMatchImpl()

virtual void cv::FlannBasedMatcher::knnMatchImpl ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
int k,
InputArrayOfArrays masks = noArray(),
bool compactResult = false )
protectedvirtual

实际上,匹配仅由以下两种方法实现。这些方法假设类对象已经过训练。公共匹配方法在调用train()之后调用这些方法。

实现 cv::DescriptorMatcher

◆ radiusMatchImpl()

virtual void cv::FlannBasedMatcher::radiusMatchImpl ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
float maxDistance,
InputArrayOfArrays masks = noArray(),
bool compactResult = false )
protectedvirtual

◆ read()

virtual void cv::FlannBasedMatcher::read ( const FileNode & fn)
virtual

从文件存储中读取算法参数。

重实现自 cv::DescriptorMatcher

◆ train()

virtual void cv::FlannBasedMatcher::train ( )
virtual

训练描述符匹配器。

训练描述符匹配器(例如,flann 索引)。在所有匹配方法中,每次匹配前都会运行方法 train()。一些描述符匹配器(例如,BruteForceMatcher)对此方法具有空实现。其他匹配器会真正训练其内部结构(例如,FlannBasedMatcher 训练 flann::Index)。

重实现自 cv::DescriptorMatcher

◆ write()

virtual void cv::FlannBasedMatcher::write ( FileStorage & fs) const
virtual

将算法参数存储在文件存储中。

重实现自 cv::DescriptorMatcher

成员数据文档

◆ addedDescCount

int cv::FlannBasedMatcher::addedDescCount
protected

◆ flannIndex

Ptr<flann::Index> cv::FlannBasedMatcher::flannIndex
protected

◆ indexParams

Ptr<flann::IndexParams> cv::FlannBasedMatcher::indexParams
protected

◆ mergedDescriptors

DescriptorCollection cv::FlannBasedMatcher::mergedDescriptors
protected

◆ searchParams

Ptr<flann::SearchParams> cv::FlannBasedMatcher::searchParams
protected

此类的文档是从以下文件生成的