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()

◆ 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
保护

此类的文档生成自以下文件