OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
未找到匹配项
cv::Algorithm 类参考

这是 OpenCV 中所有或多或少复杂算法的基类。更多…

#include <opencv2/core.hpp>

cv::Algorithm 的协作图

公有成员函数

 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除算法状态。
 
virtual bool empty () const
 如果 Algorithm 为空(例如,在开始时或读取失败后),则返回 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);
如果 (fs_read.isOpened()) // 如果我们有包含参数的文件,则读取它们
{
sbd->read(fs_read.root());
fs_read.release();
}
否则 // 否则修改参数并存储它们;用户以后可以编辑文件以使用不同的参数
{
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() -> None

◆ 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:3255
std::shared_ptr< _Tp > Ptr
**定义:** 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:3276
以下是此函数的调用图

◆ read() [1/2]

virtual void cv::Algorithm::read ( const FileNode & fn)
inlinevirtual
Python
cv.Algorithm.read(fn) -> None

◆ read() [2/2]

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

从文件节点读取算法。

这是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:3219
封装写入或读取所需所有信息的 XML/YAML/JSON 文件存储类……
定义 persistence.hpp:261
@ READ
value,打开文件以进行读取
定义 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) -> None

将算法保存到文件。为了使此方法有效,派生类必须实现 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) -> None
cv.Algorithm.write(fs, name) -> None

◆ write() [2/3]

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

◆ write() [3/3]

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

这是一个重载的成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

◆ writeFormat()

void cv::Algorithm::writeFormat ( FileStorage & fs) const
protected

此类的文档是从以下文件生成的