OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::cuda::DescriptorMatcher 類參考abstract

用於匹配關鍵點描述符的抽象基類。 更多...

#include <opencv2/cudafeatures2d.hpp>

cv::cuda::DescriptorMatcher 的協作圖

公共成員函式

virtual void add (const std::vector< GpuMat > &descriptors)=0
 向描述符集合新增描述符進行訓練。
 
virtual void clear ()=0
 清除訓練描述符集合。
 
virtual bool empty () const =0
 如果集合中沒有訓練描述符,則返回 true。
 
virtual const std::vector< GpuMat > & getTrainDescriptors () const =0
 返回訓練描述符集合的常量連結。
 
virtual bool isMaskSupported () const =0
 如果描述符匹配器支援遮罩允許的匹配,則返回 true。
 
virtual void knnMatch (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArray mask=noArray(), bool compactResult=false)=0
 為查詢集中的每個描述符找到 k 個最佳匹配(阻塞版本)。
 
virtual void knnMatch (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, int k, const std::vector< GpuMat > &masks=std::vector< GpuMat >(), bool compactResult=false)=0
 
virtual void knnMatchAsync (InputArray queryDescriptors, InputArray trainDescriptors, OutputArray matches, int k, InputArray mask=noArray(), Stream &stream=Stream::Null())=0
 為查詢集中的每個描述符找到 k 個最佳匹配(非同步版本)。
 
virtual void knnMatchAsync (InputArray queryDescriptors, OutputArray matches, int k, const std::vector< GpuMat > &masks=std::vector< GpuMat >(), Stream &stream=Stream::Null())=0
 
virtual void knnMatchConvert (InputArray gpu_matches, std::vector< std::vector< DMatch > > &matches, bool compactResult=false)=0
 將匹配陣列從內部表示轉換為標準匹配向量。
 
virtual void match (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< DMatch > &matches, InputArray mask=noArray())=0
 為查詢集中的每個描述符找到最佳匹配(阻塞版本)。
 
virtual void match (InputArray queryDescriptors, std::vector< DMatch > &matches, const std::vector< GpuMat > &masks=std::vector< GpuMat >())=0
 
virtual void matchAsync (InputArray queryDescriptors, InputArray trainDescriptors, OutputArray matches, InputArray mask=noArray(), Stream &stream=Stream::Null())=0
 為查詢集中的每個描述符找到最佳匹配(非同步版本)。
 
virtual void matchAsync (InputArray queryDescriptors, OutputArray matches, const std::vector< GpuMat > &masks=std::vector< GpuMat >(), Stream &stream=Stream::Null())=0
 
virtual void matchConvert (InputArray gpu_matches, std::vector< DMatch > &matches)=0
 將匹配陣列從內部表示轉換為標準匹配向量。
 
virtual void radiusMatch (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArray mask=noArray(), bool compactResult=false)=0
 對於每個查詢描述符,查詢距離不大於指定距離的訓練描述符(阻塞版本)。
 
virtual void radiusMatch (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, const std::vector< GpuMat > &masks=std::vector< GpuMat >(), bool compactResult=false)=0
 
virtual void radiusMatchAsync (InputArray queryDescriptors, InputArray trainDescriptors, OutputArray matches, float maxDistance, InputArray mask=noArray(), Stream &stream=Stream::Null())=0
 對於每個查詢描述符,查詢距離不大於指定距離的訓練描述符(非同步版本)。
 
virtual void radiusMatchAsync (InputArray queryDescriptors, OutputArray matches, float maxDistance, const std::vector< GpuMat > &masks=std::vector< GpuMat >(), Stream &stream=Stream::Null())=0
 
virtual void radiusMatchConvert (InputArray gpu_matches, std::vector< std::vector< DMatch > > &matches, bool compactResult=false)=0
 將匹配陣列從內部表示轉換為標準匹配向量。
 
virtual void train ()=0
 訓練描述符匹配器。
 
- 公共成員函式 繼承自 cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 從檔案儲存中讀取演算法引數。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 將演算法引數儲存到檔案儲存中。
 
void write (FileStorage &fs, const String &name) const
 

靜態公共成員函式

static Ptr< cuda::DescriptorMatchercreateBFMatcher (int normType=cv::NORM_L2)
 暴力描述符匹配器。
 
- 靜態公共成員函式 繼承自 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)
 從檔案節點讀取演算法。
 

額外繼承成員

- 保護成員函式 繼承自 cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細描述

用於匹配關鍵點描述符的抽象基類。

它有兩組匹配方法:用於將一個影像的描述符與另一個影像或影像集進行匹配。

成員函式文件

◆ add()

virtual void cv::cuda::DescriptorMatcher::add ( const std::vector< GpuMat > & descriptors)
純虛擬函式

向描述符集合新增描述符進行訓練。

如果集合不為空,新描述符將被新增到現有訓練描述符中。

引數
descriptors要新增的描述符。每個 descriptors[i] 都是來自同一個訓練影像的描述符集。

◆ clear()

virtual void cv::cuda::DescriptorMatcher::clear ( )
純虛擬函式

清除訓練描述符集合。

重寫自 cv::Algorithm

◆ createBFMatcher()

static Ptr< cuda::DescriptorMatcher > cv::cuda::DescriptorMatcher::createBFMatcher ( int normType = cv::NORM_L2)
static

暴力描述符匹配器。

對於第一個集合中的每個描述符,此匹配器透過嘗試每個描述符來查詢第二個集合中最接近的描述符。此描述符匹配器支援遮罩描述符集的允許匹配。

引數
normTypeNORM_L1、NORM_L2、NORM_HAMMING 中的一種。L1L2 範數是 SIFT 和 SURF 描述符的首選,NORM_HAMMING 應該與 ORBBRISK 和 BRIEF 一起使用)。

◆ empty()

virtual bool cv::cuda::DescriptorMatcher::empty ( ) const
純虛擬函式

如果集合中沒有訓練描述符,則返回 true。

重寫自 cv::Algorithm

◆ getTrainDescriptors()

virtual const std::vector< GpuMat > & cv::cuda::DescriptorMatcher::getTrainDescriptors ( ) const
純虛擬函式

返回訓練描述符集合的常量連結。

◆ isMaskSupported()

virtual bool cv::cuda::DescriptorMatcher::isMaskSupported ( ) const
純虛擬函式

如果描述符匹配器支援遮罩允許的匹配,則返回 true。

◆ knnMatch() [1/2]

virtual void cv::cuda::DescriptorMatcher::knnMatch ( InputArray queryDescriptors,
InputArray trainDescriptors,
std::vector< std::vector< DMatch > > & matches,
int k,
InputArray mask = noArray(),
bool compactResult = false )
純虛擬函式

為查詢集中的每個描述符找到 k 個最佳匹配(阻塞版本)。

引數
queryDescriptors查詢描述符集。
trainDescriptors訓練描述符集。此集不會新增到儲存在類物件中的訓練描述符集合中。
matches匹配項。每個 matches[i] 是相同查詢描述符的 k 個或更少匹配項。
k每個查詢描述符找到的最佳匹配計數,如果某個查詢描述符總共有少於 k 個可能的匹配,則計數會更少。
mask指定輸入查詢和訓練描述符矩陣之間允許匹配的掩碼。
compactResult當掩碼(或多個掩碼)不為空時使用的引數。如果 compactResult 為 false,則 matches 向量的大小與 queryDescriptors 的行數相同。如果 compactResult 為 true,則 matches 向量不包含完全被掩蓋的查詢描述符的匹配項。

DescriptorMatcher::match 方法的這些擴充套件變體為每個查詢描述符找到幾個最佳匹配。匹配按距離遞增順序返回。有關查詢和訓練描述符的詳細資訊,請參見 DescriptorMatcher::match

此函式的呼叫圖如下

◆ knnMatch() [2/2]

virtual void cv::cuda::DescriptorMatcher::knnMatch ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
int k,
const std::vector< GpuMat > & masks = std::vector< GpuMat >(),
bool compactResult = false )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

◆ knnMatchAsync() [1/2]

virtual void cv::cuda::DescriptorMatcher::knnMatchAsync ( InputArray queryDescriptors,
InputArray trainDescriptors,
OutputArray matches,
int k,
InputArray mask = noArray(),
Stream & stream = Stream::Null() )
純虛擬函式

為查詢集中的每個描述符找到 k 個最佳匹配(非同步版本)。

引數
queryDescriptors查詢描述符集。
trainDescriptors訓練描述符集。此集不會新增到儲存在類物件中的訓練描述符集合中。
matches儲存在 GPU 記憶體中的匹配陣列。內部表示未定義。使用 DescriptorMatcher::knnMatchConvert 方法以標準表示檢索結果。
k每個查詢描述符找到的最佳匹配計數,如果某個查詢描述符總共有少於 k 個可能的匹配,則計數會更少。
mask指定輸入查詢和訓練描述符矩陣之間允許匹配的掩碼。
CUDA 流。

DescriptorMatcher::matchAsync 方法的這些擴充套件變體為每個查詢描述符找到幾個最佳匹配。匹配按距離遞增順序返回。有關查詢和訓練描述符的詳細資訊,請參見 DescriptorMatcher::matchAsync

此函式的呼叫圖如下

◆ knnMatchAsync() [2/2]

virtual void cv::cuda::DescriptorMatcher::knnMatchAsync ( InputArray queryDescriptors,
OutputArray matches,
int k,
const std::vector< GpuMat > & masks = std::vector< GpuMat >(),
Stream & stream = Stream::Null() )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

◆ knnMatchConvert()

virtual void cv::cuda::DescriptorMatcher::knnMatchConvert ( InputArray gpu_matches,
std::vector< std::vector< DMatch > > & matches,
bool compactResult = false )
純虛擬函式

將匹配陣列從內部表示轉換為標準匹配向量。

此方法應與 DescriptorMatcher::knnMatchAsync 結合使用以獲取最終結果。僅在 DescriptorMatcher::knnMatchAsync 完成後(即同步後)呼叫此方法。

引數
gpu_matches匹配項,從 DescriptorMatcher::knnMatchAsync 返回。
matchesDMatch 物件的向量。
compactResult當掩碼(或多個掩碼)不為空時使用的引數。如果 compactResult 為 false,則 matches 向量的大小與 queryDescriptors 的行數相同。如果 compactResult 為 true,則 matches 向量不包含完全被掩蓋的查詢描述符的匹配項。

◆ match() [1/2]

virtual void cv::cuda::DescriptorMatcher::match ( InputArray queryDescriptors,
InputArray trainDescriptors,
std::vector< DMatch > & matches,
InputArray mask = noArray() )
純虛擬函式

為查詢集中的每個描述符找到最佳匹配(阻塞版本)。

引數
queryDescriptors查詢描述符集。
trainDescriptors訓練描述符集。此集不會新增到儲存在類物件中的訓練描述符集合中。
matches匹配項。如果查詢描述符在掩碼中被掩蓋,則不會為該描述符新增匹配項。因此,matches 的大小可能小於查詢描述符的數量。
mask指定輸入查詢和訓練描述符矩陣之間允許匹配的掩碼。

此方法的第一個變體中,訓練描述符作為輸入引數傳入。此方法的第二個變體中,使用 DescriptorMatcher::add 設定的訓練描述符集合。可以傳入可選掩碼(或多個掩碼)來指定哪些查詢和訓練描述符可以匹配。即,只有當 mask.at<uchar>(i,j) 非零時,queryDescriptors[i] 才能與 trainDescriptors[j] 匹配。

此函式的呼叫圖如下

◆ match() [2/2]

virtual void cv::cuda::DescriptorMatcher::match ( InputArray queryDescriptors,
std::vector< DMatch > & matches,
const std::vector< GpuMat > & masks = std::vector< GpuMat >() )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

◆ matchAsync() [1/2]

virtual void cv::cuda::DescriptorMatcher::matchAsync ( InputArray queryDescriptors,
InputArray trainDescriptors,
OutputArray matches,
InputArray mask = noArray(),
Stream & stream = Stream::Null() )
純虛擬函式

為查詢集中的每個描述符找到最佳匹配(非同步版本)。

引數
queryDescriptors查詢描述符集。
trainDescriptors訓練描述符集。此集不會新增到儲存在類物件中的訓練描述符集合中。
matches儲存在 GPU 記憶體中的匹配陣列。內部表示未定義。使用 DescriptorMatcher::matchConvert 方法以標準表示檢索結果。
mask指定輸入查詢和訓練描述符矩陣之間允許匹配的掩碼。
CUDA 流。

此方法的第一個變體中,訓練描述符作為輸入引數傳入。此方法的第二個變體中,使用 DescriptorMatcher::add 設定的訓練描述符集合。可以傳入可選掩碼(或多個掩碼)來指定哪些查詢和訓練描述符可以匹配。即,只有當 mask.at<uchar>(i,j) 非零時,queryDescriptors[i] 才能與 trainDescriptors[j] 匹配。

此函式的呼叫圖如下

◆ matchAsync() [2/2]

virtual void cv::cuda::DescriptorMatcher::matchAsync ( InputArray queryDescriptors,
OutputArray matches,
const std::vector< GpuMat > & masks = std::vector< GpuMat >(),
Stream & stream = Stream::Null() )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

◆ matchConvert()

virtual void cv::cuda::DescriptorMatcher::matchConvert ( InputArray gpu_matches,
std::vector< DMatch > & matches )
純虛擬函式

將匹配陣列從內部表示轉換為標準匹配向量。

此方法應與 DescriptorMatcher::matchAsync 結合使用以獲取最終結果。僅在 DescriptorMatcher::matchAsync 完成後(即同步後)呼叫此方法。

引數
gpu_matches匹配項,從 DescriptorMatcher::matchAsync 返回。
matchesDMatch 物件的向量。

◆ radiusMatch() [1/2]

virtual void cv::cuda::DescriptorMatcher::radiusMatch ( InputArray queryDescriptors,
InputArray trainDescriptors,
std::vector< std::vector< DMatch > > & matches,
float maxDistance,
InputArray mask = noArray(),
bool compactResult = false )
純虛擬函式

對於每個查詢描述符,查詢距離不大於指定距離的訓練描述符(阻塞版本)。

引數
queryDescriptors查詢描述符集。
trainDescriptors訓練描述符集。此集不會新增到儲存在類物件中的訓練描述符集合中。
matches找到的匹配項。
maxDistance匹配描述符之間距離的閾值。此處距離指度量距離(例如 漢明 距離),而不是座標之間的距離(以畫素測量)!
mask指定輸入查詢和訓練描述符矩陣之間允許匹配的掩碼。
compactResult當掩碼(或多個掩碼)不為空時使用的引數。如果 compactResult 為 false,則 matches 向量的大小與 queryDescriptors 的行數相同。如果 compactResult 為 true,則 matches 向量不包含完全被掩蓋的查詢描述符的匹配項。

對於每個查詢描述符,這些方法查詢距離查詢描述符不大於 maxDistance 的訓練描述符。找到的匹配項按距離遞增順序返回。

此函式的呼叫圖如下

◆ radiusMatch() [2/2]

virtual void cv::cuda::DescriptorMatcher::radiusMatch ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
float maxDistance,
const std::vector< GpuMat > & masks = std::vector< GpuMat >(),
bool compactResult = false )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

◆ radiusMatchAsync() [1/2]

virtual void cv::cuda::DescriptorMatcher::radiusMatchAsync ( InputArray queryDescriptors,
InputArray trainDescriptors,
OutputArray matches,
float maxDistance,
InputArray mask = noArray(),
Stream & stream = Stream::Null() )
純虛擬函式

對於每個查詢描述符,查詢距離不大於指定距離的訓練描述符(非同步版本)。

引數
queryDescriptors查詢描述符集。
trainDescriptors訓練描述符集。此集不會新增到儲存在類物件中的訓練描述符集合中。
matches儲存在 GPU 記憶體中的匹配陣列。內部表示未定義。使用 DescriptorMatcher::radiusMatchConvert 方法以標準表示檢索結果。
maxDistance匹配描述符之間距離的閾值。此處距離指度量距離(例如 漢明 距離),而不是座標之間的距離(以畫素測量)!
mask指定輸入查詢和訓練描述符矩陣之間允許匹配的掩碼。
CUDA 流。

對於每個查詢描述符,這些方法查詢距離查詢描述符不大於 maxDistance 的訓練描述符。找到的匹配項按距離遞增順序返回。

此函式的呼叫圖如下

◆ radiusMatchAsync() [2/2]

virtual void cv::cuda::DescriptorMatcher::radiusMatchAsync ( InputArray queryDescriptors,
OutputArray matches,
float maxDistance,
const std::vector< GpuMat > & masks = std::vector< GpuMat >(),
Stream & stream = Stream::Null() )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於它接受的引數。

◆ radiusMatchConvert()

virtual void cv::cuda::DescriptorMatcher::radiusMatchConvert ( InputArray gpu_matches,
std::vector< std::vector< DMatch > > & matches,
bool compactResult = false )
純虛擬函式

將匹配陣列從內部表示轉換為標準匹配向量。

此方法應與 DescriptorMatcher::radiusMatchAsync 結合使用以獲取最終結果。僅在 DescriptorMatcher::radiusMatchAsync 完成後(即同步後)呼叫此方法。

引數
gpu_matches匹配項,從 DescriptorMatcher::radiusMatchAsync 返回。
matchesDMatch 物件的向量。
compactResult當掩碼(或多個掩碼)不為空時使用的引數。如果 compactResult 為 false,則 matches 向量的大小與 queryDescriptors 的行數相同。如果 compactResult 為 true,則 matches 向量不包含完全被掩蓋的查詢描述符的匹配項。

◆ train()

virtual void cv::cuda::DescriptorMatcher::train ( )
純虛擬函式

訓練描述符匹配器。

訓練描述符匹配器(例如,FLANN 索引)。在所有匹配方法中,每次匹配前都會執行 train() 方法。


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