OpenCV 4.12.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 (trainDescCollection) 或 GPU (utrainDescCollection) 描述符集合。
 
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())
 從字串載入演算法。
 
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 (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
 

保護屬性

bool crossCheck
 
int normType
 
- 從 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
}
 
- 從 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 ( )
內聯虛擬函式

成員函式文件

◆ 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

暴力匹配器建立方法。

引數
normType以下之一:NORM_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 個最近鄰時,這將是其預設行為。如果 crossCheck==true,則 k=1 的 knnMatch() 方法將僅返回 (i,j) 對,使得對於第 i 個查詢描述符,匹配器集合中的第 j 個描述符是最近的,反之亦然,即 BFMatcher 將僅返回一致的對。當有足夠的匹配時,這種技術通常會產生最佳結果,且異常值數量最少。這是 D. Lowe 在 SIFT 論文中使用的比率測試的替代方法。

◆ isMaskSupported()

virtual bool cv::BFMatcher::isMaskSupported ( ) const
內聯虛擬函式

如果描述符匹配器支援掩碼允許的匹配,則返回 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 )
保護虛擬函式

實際上,匹配僅由以下兩種方法實現。這些方法假定類物件已進行過訓練。公共匹配方法在呼叫 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 )
保護虛擬函式

成員資料文件

◆ crossCheck

bool cv::BFMatcher::crossCheck
保護

◆ normType

int cv::BFMatcher::normType
保護

此類的文件是從以下檔案生成的