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

使用 LINE 模板匹配演算法和任何模態集的物件檢測器。 更多...

#include <opencv2/rgbd/linemod.hpp>

cv::linemod::Detector 協作圖

公共成員函式

 Detector ()
 空建構函式,使用 read() 初始化。
 
 Detector (const std::vector< Ptr< Modality > > &modalities, const std::vector< int > &T_pyramid)
 建構函式。
 
int addSyntheticTemplate (const std::vector< Template > &templates, const String &class_id)
 新增透過外部方式計算的新物件模板。
 
int addTemplate (const std::vector< Mat > &sources, const String &class_id, const Mat &object_mask, Rect *bounding_box=NULL)
 新增新物件模板。
 
std::vector< StringclassIds () const
 
const std::vector< Ptr< Modality > > & getModalities () const
 獲取此檢測器使用的模態。
 
int getT (int pyramid_level) const
 在金字塔級別獲取取樣步長 T。
 
const std::vector< Template > & getTemplates (const String &class_id, int template_id) const
 獲取由 template_id 標識的模板金字塔。
 
void match (const std::vector< Mat > &sources, float threshold, std::vector< Match > &matches, const std::vector< String > &class_ids=std::vector< String >(), OutputArrayOfArrays quantized_images=noArray(), const std::vector< Mat > &masks=std::vector< Mat >()) const
 透過模板匹配檢測物件。
 
int numClasses () const
 
int numTemplates () const
 
int numTemplates (const String &class_id) const
 
int pyramidLevels () const
 獲取此檢測器使用的金字塔級別數。
 
void read (const FileNode &fn)
 
String readClass (const FileNode &fn, const String &class_id_override="")
 
void readClasses (const std::vector< String > &class_ids, const String &format="templates_%s.yml.gz")
 
void write (FileStorage &fs) const
 
void writeClass (const String &class_id, FileStorage &fs) const
 
void writeClasses (const String &format="templates_%s.yml.gz") const
 

保護型別

typedef std::vector< MatLinearMemories
 
typedef std::vector< std::vector< LinearMemories > > LinearMemoryPyramid
 
typedef std::vector< TemplateTemplatePyramid
 
typedef std::map< String, std::vector< TemplatePyramid > > TemplatesMap
 

保護成員函式

void matchClass (const LinearMemoryPyramid &lm_pyramid, const std::vector< Size > &sizes, float threshold, std::vector< Match > &matches, const String &class_id, const std::vector< TemplatePyramid > &template_pyramids) const
 

保護屬性

TemplatesMap class_templates(類模板)
 
std::vector< Ptr< Modality > > modalities(模態)
 
int pyramid_levels(金字塔層級)
 
std::vector< int > T_at_level(層級 T 值)
 

詳細描述

使用 LINE 模板匹配演算法和任何模態集的物件檢測器。

成員 Typedef 文件

◆ LinearMemories

◆ LinearMemoryPyramid

std::vector< std::vector<LinearMemories> > cv::linemod::Detector::LinearMemoryPyramid
保護

◆ TemplatePyramid

◆ TemplatesMap

建構函式 & 解構函式文件

◆ Detector() [1/2]

cv::linemod::Detector::Detector ( )
Python
cv.linemod.Detector() -> <linemod_Detector object>
cv.linemod.Detector(modalities, T_pyramid) -> <linemod_Detector object>

空建構函式,使用 read() 初始化。

◆ Detector() [2/2]

cv::linemod::Detector::Detector ( const std::vector< Ptr< Modality > > & modalities(模態),
const std::vector< int > & T_pyramid )
Python
cv.linemod.Detector() -> <linemod_Detector object>
cv.linemod.Detector(modalities, T_pyramid) -> <linemod_Detector object>

建構函式。

引數
modalities(模態)要使用的模態(顏色梯度、深度法線等)。
T_pyramid每個金字塔級別取樣步長 T 的值。金字塔級別數是 T_pyramid.size()。

成員函式文件

◆ addSyntheticTemplate()

int cv::linemod::Detector::addSyntheticTemplate ( const std::vector< Template > & templates,
const String & class_id )
Python
cv.linemod.Detector.addSyntheticTemplate(templates, class_id) -> retval

新增透過外部方式計算的新物件模板。

◆ addTemplate()

int cv::linemod::Detector::addTemplate ( const std::vector< Mat > & sources,
const String & class_id,
const Mat & object_mask,
Rect * bounding_box = NULL )
Python
cv.linemod.Detector.addTemplate(sources, class_id, object_mask) -> retval, bounding_box

新增新物件模板。

引數
sources源影像,每個模態一個。
class_id物件類別 ID。
object_mask將物件與背景分離的掩碼。
[輸出]bounding_box可選地返回提取特徵的邊界框。
返回
模板 ID,如果未能提取有效模板則為 -1。

◆ classIds()

std::vector< String > cv::linemod::Detector::classIds ( ) const
Python
cv.linemod.Detector.classIds() -> retval

◆ getModalities()

const std::vector< Ptr< Modality > > & cv::linemod::Detector::getModalities ( ) const
inline
Python
cv.linemod.Detector.getModalities() -> retval

獲取此檢測器使用的模態。

不允許新增/移除模態,但您可以動態轉換它們以調整引數。

◆ getT()

int cv::linemod::Detector::getT ( int pyramid_level) const
inline
Python
cv.linemod.Detector.getT(pyramid_level) -> retval

在金字塔級別獲取取樣步長 T。

◆ getTemplates()

const std::vector< Template > & cv::linemod::Detector::getTemplates ( const String & class_id,
int template_id ) const
Python
cv.linemod.Detector.getTemplates(class_id, template_id) -> retval

獲取由 template_id 標識的模板金字塔。

例如,對於 2 個模態(梯度、法線)和兩個金字塔級別(L0、L1),順序是(梯度L0、法線L0、梯度L1、法線L1)。

◆ match()

void cv::linemod::Detector::match ( const std::vector< Mat > & sources,
float RANSAC引數。它是點到畫素中對極線的最大距離,超過此距離的點將被視為異常值,不用於計算最終的基本矩陣。它可以設定為1-3左右,具體取決於點定位的精度、影像解析度和影像噪聲。,
std::vector< Match > & matches,
const std::vector< String > & class_ids = std::vector< String >(),
OutputArrayOfArrays quantized_images = noArray(),
const std::vector< Mat > & masks = std::vector< Mat >() ) const
Python
cv.linemod.Detector.match(sources, threshold[, class_ids[, quantized_images[, masks]]]) -> matches, quantized_images

透過模板匹配檢測物件。

在最低金字塔級別進行全域性匹配,然後向上逐步細化金字塔。

引數
sources源影像,每個模態一個。
RANSAC引數。它是點到畫素中對極線的最大距離,超過此距離的點將被視為異常值,不用於計算最終的基本矩陣。它可以設定為1-3左右,具體取決於點定位的精度、影像解析度和影像噪聲。相似度閾值,0 到 100 之間的百分比。
[輸出]matches模板匹配結果,按相似度得分排序。
class_ids如果非空,則只搜尋所需的物件類別。
[輸出]quantized_images可選地返回量化影像的 vector<Mat>。
遮罩匹配過程中要考慮的掩碼。掩碼應為 CV_8UC1 型別,其中 255 表示有效畫素。如果非空,該向量必須與源影像的大小相同。每個元素必須為空或與相應的源影像大小相同。
此函式的呼叫圖如下

◆ matchClass()

void cv::linemod::Detector::matchClass ( const LinearMemoryPyramid & lm_pyramid,
const std::vector< Size > & sizes,
float RANSAC引數。它是點到畫素中對極線的最大距離,超過此距離的點將被視為異常值,不用於計算最終的基本矩陣。它可以設定為1-3左右,具體取決於點定位的精度、影像解析度和影像噪聲。,
std::vector< Match > & matches,
const String & class_id,
const std::vector< TemplatePyramid > & template_pyramids ) const
保護

◆ numClasses()

int cv::linemod::Detector::numClasses ( ) const
inline
Python
cv.linemod.Detector.numClasses() -> retval

◆ numTemplates() [1/2]

int cv::linemod::Detector::numTemplates ( ) const
Python
cv.linemod.Detector.numTemplates() -> retval
cv.linemod.Detector.numTemplates(class_id) -> retval

◆ numTemplates() [2/2]

int cv::linemod::Detector::numTemplates ( const String & class_id) const
Python
cv.linemod.Detector.numTemplates() -> retval
cv.linemod.Detector.numTemplates(class_id) -> retval

◆ pyramidLevels()

int cv::linemod::Detector::pyramidLevels ( ) const
inline
Python
cv.linemod.Detector.pyramidLevels() -> retval

獲取此檢測器使用的金字塔級別數。

◆ read()

void cv::linemod::Detector::read ( const FileNode & fn)
Python
cv.linemod.Detector.read(fn) ->

◆ readClass()

String cv::linemod::Detector::readClass ( const FileNode & fn,
const String & class_id_override = "" )

◆ readClasses()

void cv::linemod::Detector::readClasses ( const std::vector< String > & class_ids,
const String & format = "templates_%s.yml.gz" )
Python
cv.linemod.Detector.readClasses(class_ids[, format]) ->

◆ write()

void cv::linemod::Detector::write ( FileStorage & fs) const

◆ writeClass()

void cv::linemod::Detector::writeClass ( const String & class_id,
FileStorage & fs ) const

◆ writeClasses()

void cv::linemod::Detector::writeClasses ( const String & format = "templates_%s.yml.gz") const
Python
cv.linemod.Detector.writeClasses([, format]) ->

成員資料文件

◆ class_templates

TemplatesMap cv::linemod::Detector::class_templates
保護

◆ modalities

std::vector< Ptr<Modality> > cv::linemod::Detector::modalities
保護

◆ pyramid_levels

int cv::linemod::Detector::pyramid_levels
保護

◆ T_at_level

std::vector<int> cv::linemod::Detector::T_at_level
保護

此類的文件生成自以下檔案