OpenCV  4.10.0
开源计算机视觉库
正在加载...
正在搜索...
无匹配
公共成员函数 | 静态公共成员函数 | 保护成员函数 | 保护属性 | 所有成员列表
cv::BFMatcher 类参考

暴力匹配描述符匹配器。 更多...

#include <opencv2/features2d.hpp>

cv::BFMatcher 的协作图

公共成员函数

 BFMatcher (int normType=NORM_L2, bool crossCheck=false)
 暴力匹配器构造函数(已弃用)。请使用 BFMatcher.create()
 
virtual ~BFMatcher ()
 
virtual CV_NODISCARD_STD Ptr< DescriptorMatcherclone (bool emptyTrainData=false) const CV_OVERRIDE
 克隆匹配器。
 
virtual bool isMaskSupported () const CV_OVERRIDE
 如果描述符匹配器支持屏蔽允许的匹配,则返回 true。
 
- 从 cv::DescriptorMatcher 继承的公共成员函数
virtual ~DescriptorMatcher ()
 
virtual void add (InputArrayOfArrays descriptors)
 将描述符添加到训练 CPU(trainDescCollectionis)或 GPU(utrainDescCollectionis)描述符集合。
 
virtual void clear () CV_OVERRIDE
 清除训练描述符集合。
 
virtual 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)
 
virtual void read (const FileNode &) CV_OVERRIDE
 从文件存储中读取算法参数。
 
void read (const String &fileName)
 
virtual void train ()
 训练描述符匹配器。
 
void write (const Ptr< FileStorage > &fs, const String &name) const
 
void write (const String &fileName) const
 
virtual void write (FileStorage &) const CV_OVERRIDE
 将算法参数存储在文件存储中。
 
void write (FileStorage &fs, const String &name) const
 
- 从 cv::Algorithm 继承的公共成员函数
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual String getDefaultName () const
 
virtual 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< BFMatchercreate (int normType=NORM_L2, bool crossCheck=false)
 暴力匹配器创建方法。
 
- 从 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())
 从 String 中加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点中读取算法。
 

保护成员函数

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

受保护属性

bool crossCheck
 
int normType
 
- 继承自 cv::DescriptorMatcher 的受保护属性
std::vector< MattrainDescCollection
 训练图像的描述符集合。
 
std::vector< UMatutrainDescCollection
 

其他继承的成员

- 继承自 cv::DescriptorMatcher 的公开类型
enum  MatcherType {
  FLANNBASED = 1 ,
  BRUTEFORCE = 2 ,
  BRUTEFORCE_L1 = 3 ,
  BRUTEFORCE_HAMMING = 4 ,
  BRUTEFORCE_HAMMINGLUT = 5 ,
  BRUTEFORCE_SL2 = 6
}
 
- 继承自 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)
 

详细描述

暴力匹配描述符。

对于第一组中的每个描述符,此匹配器通过尝试每个描述符来查找第二组中最接近的描述符。此描述符匹配器支持对描述符集的匹配进行掩码。

构造函数和析构函数文档

◆ BFMatcher()

cv::BFMatcher::BFMatcher ( int  normType = NORM_L2,
bool  crossCheck = false 
)
Python
cv.BFMatcher([, normType[, crossCheck]]) -> <BFMatcher object>

暴力匹配器构造函数(已弃用)。请使用 BFMatcher.create()

◆ ~BFMatcher()

virtual cv::BFMatcher::~BFMatcher ( )
inlinevirtual

成员函数文档

◆ clone()

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

克隆匹配器。

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

实现 cv::DescriptorMatcher

◆ create()

static Ptr< BFMatcher > cv::BFMatcher::create ( int  normType = NORM_L2,
bool  crossCheck = false 
)
static
Python
cv.BFMatcher.create([, normType[, crossCheck]]) -> retval
cv.BFMatcher_create([, normType[, crossCheck]]) -> retval

暴力匹配器创建方法。

参数
normTypeNORM_L1、NORM_L2、NORM_HAMMING、NORM_HAMMING2 之一。 L1L2 规范是 SIFT 和 SURF 描述符的首选,NORM_HAMMING 应与 ORBBRISK 和 BRIEF 一起使用,NORM_HAMMING2 应在 WTA_K==3 或 4 时与 ORB 一起使用(请参见 ORB::ORB 构造函数描述)。
crossCheck如果为 false,则这是当 BFMatcher 为每个查询描述符找到 k 个最近邻时,将使用默认的 BFMatcher 行为。如果 crossCheck==true,则使用 k=1 的 knnMatch() 方法仅返回对 (i,j),使得对于第 i 个查询描述符,匹配器集合中的第 j 个描述符是最接近的,反之亦然,即 BFMatcher 仅返回一致对。当匹配足够多时,此类技术通常会产生最佳结果,并且异常值数量最少。这是对 D. Lowe 在 SIFT 论文中使用的比率测试的替代方法。

◆ isMaskSupported()

virtual bool cv::BFMatcher::isMaskSupported ( ) const
inlinevirtual

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

实现 cv::DescriptorMatcher

◆ knnMatchImpl()

virtual void cv::BFMatcher::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::BFMatcher::radiusMatchImpl ( InputArray  queryDescriptors,
std::vector< std::vector< DMatch > > &  matches,
float  maxDistance,
InputArrayOfArrays  masks = noArray(),
bool  compactResult = false 
)
protectedvirtual

成员数据文档

◆ crossCheck

bool cv::BFMatcher::crossCheck
protected

◆ normType

int cv::BFMatcher::normType
protected

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