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

這是OpenCV中所有或多或少複雜演算法的基類。 更多...

#include <opencv2/core.hpp>

cv::Algorithm 協作圖

公共成員函式

 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除演算法狀態。
 
virtual bool empty () const
 如果演算法為空(例如,在開始時或讀取不成功後),則返回 true。
 
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
 

靜態公共成員函式

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 writeFormat (FileStorage &fs) const
 

詳細描述

這是OpenCV中所有或多或少複雜演算法的基類。

特別是對於演算法類,可以有多種實現。例如立體匹配(有塊匹配、半全域性塊匹配、圖割等演算法)、背景減除(可以使用高斯混合模型、碼本演算法等完成)、光流(塊匹配、Lucas-Kanade、Horn-Schunck等)。

以下是透過 Algorithm 介面在您的應用程式中使用 SimpleBlobDetector 的示例

Ptr<Feature2D> sbd = SimpleBlobDetector::create();
FileStorage fs_read("SimpleBlobDetector_params.xml", FileStorage::READ);
if (fs_read.isOpened()) // 如果我們有引數檔案,則讀取它們
{
sbd->read(fs_read.root());
fs_read.release();
}
else // 否則修改引數並存儲它們;使用者以後可以編輯檔案以使用不同的引數
{
fs_read.release();
FileStorage fs_write("SimpleBlobDetector_params.xml", FileStorage::WRITE);
sbd->write(fs_write);
fs_write.release();
}
Mat result, image = imread("../data/detect_blob.png", IMREAD_COLOR);
vector<KeyPoint> keypoints;
sbd->detect(image, keypoints, Mat());
drawKeypoints(image, keypoints, result);
for (vector<KeyPoint>::iterator k = keypoints.begin(); k != keypoints.end(); ++k)
circle(result, k->pt, (int)k->size, Scalar(0, 0, 255), 2);
imshow("result", result);
waitKey(0);

建構函式 & 解構函式文件

◆ Algorithm()

cv::Algorithm::Algorithm ( )

◆ ~Algorithm()

virtual cv::Algorithm::~Algorithm ( )
virtual

成員函式文件

◆ clear()

virtual void cv::Algorithm::clear ( )
inlinevirtual
Python
cv.Algorithm.clear() ->

◆ empty()

virtual bool cv::Algorithm::empty ( ) const
inlinevirtual
Python
cv.Algorithm.empty() -> retval

◆ getDefaultName()

◆ load()

template<typename _Tp >
static Ptr< _Tp > cv::Algorithm::load ( const String & filename,
const String & objname = String() )
inlinestatic

從檔案中載入演算法。

引數
filename要讀取的檔名。
objname要讀取的節點的可選名稱(如果為空,將使用第一個頂層節點)

這是 Algorithm 的靜態模板方法。其用法如下(以 SVM 為例)

Ptr<SVM> svm = Algorithm::load<SVM>("my_svm_model.xml");
static Ptr< _Tp > load(const String &filename, const String &objname=String())
從檔案中載入演算法。
定義 core.hpp:3260
std::shared_ptr< _Tp > Ptr
Definition cvstd_wrapper.hpp:23

為了使此方法生效,派生類必須重寫 Algorithm::read(const FileNode& fn)

此函式的呼叫圖如下

◆ loadFromString()

template<typename _Tp >
static Ptr< _Tp > cv::Algorithm::loadFromString ( const String & strModel,
const String & objname = String() )
inlinestatic

從字串載入演算法。

引數
strModel包含要載入模型的字串變數。
objname要讀取的節點的可選名稱(如果為空,將使用第一個頂層節點)

這是 Algorithm 的靜態模板方法。其用法如下(以 SVM 為例)

static Ptr< _Tp > loadFromString(const String &strModel, const String &objname=String())
從字串載入演算法。
定義 core.hpp:3281
此函式的呼叫圖如下

◆ read() [1/2]

◆ read() [2/2]

template<typename _Tp >
static Ptr< _Tp > cv::Algorithm::read ( const FileNode & fn)
inlinestatic
Python
cv.Algorithm.read(fn) ->

從檔案節點讀取演算法。

這是 Algorithm 的靜態模板方法。其用法如下(以 SVM 為例)

cv::FileStorage fsRead("example.xml", FileStorage::READ);
Ptr<SVM> svm = Algorithm::read<SVM>(fsRead.root());
virtual void read(const FileNode &fn)
從檔案儲存中讀取演算法引數。
定義 core.hpp:3224
XML/YAML/JSON 檔案儲存類,封裝了寫入或讀取所需的所有資訊...
定義 persistence.hpp:261
@ READ
值,開啟檔案進行讀取
定義 persistence.hpp:266

為了使此方法生效,派生類必須重寫 Algorithm::read(const FileNode& fn) 並且還必須有一個不帶引數(或帶所有可選引數)的靜態 create() 方法

◆ save()

virtual void cv::Algorithm::save ( const String & filename) const
virtual
Python
cv.Algorithm.save(filename) ->

將演算法儲存到檔案。為了使此方法生效,派生類必須實現 Algorithm::write(FileStorage& fs)。

◆ write() [1/3]

void cv::Algorithm::write ( const Ptr< FileStorage > & fs,
const String & name = String() ) const
Python
cv.Algorithm.write(fs) ->
cv.Algorithm.write(fs, name) ->

◆ write() [2/3]

◆ write() [3/3]

void cv::Algorithm::write ( FileStorage & fs,
const String & name ) const
Python
cv.Algorithm.write(fs) ->
cv.Algorithm.write(fs, name) ->

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

◆ writeFormat()

void cv::Algorithm::writeFormat ( FileStorage & fs) const
保護

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