OpenCV  4.10.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 的示例

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);
封装了所有写入或读取信息所需的 XML/YAML/JSON 文件存储类...
定义 persistence.hpp:304
@ WRITE
值,以写入模式打开文件
定义 persistence.hpp:310
@ READ
值,以读取模式打开文件
定义 persistence.hpp:309
static Ptr< SimpleBlobDetector > create(const SimpleBlobDetector::Params &parameters=SimpleBlobDetector::Params())
Scalar_< double > Scalar
定义 types.hpp:702
std::shared_ptr< _Tp > Ptr
定义 cvstd_wrapper.hpp:23
void drawKeypoints(InputArray image, const std::vector< KeyPoint > &keypoints, InputOutputArray outImage, const Scalar &color=Scalar::all(-1), DrawMatchesFlags flags=DrawMatchesFlags::DEFAULT)
绘制关键点。
void imshow(const String &winname, InputArray mat)
在指定窗口中显示图像。
int waitKey(int delay=0)
等待按下键。
@ IMREAD_COLOR
如果设置,始终将图像转换为 3 通道 BGR 彩色图像。
定义 imgcodecs.hpp:71
CV_EXPORTS_W Mat imread(const String &filename, int flags=IMREAD_COLOR)
从文件中加载图像。
void circle(InputOutputArray img, Point center, int radius, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=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()

virtual String cv::Algorithm::getDefaultName ( ) const
virtual
Python
cv.Algorithm.getDefaultName() -> retval

返回算法字符串标识符。当对象保存到文件或字符串时,此字符串用作顶层 xml/yml 节点标签。

cv::Feature2Dcv::AffineFeaturecv::SIFTcv::BRISKcv::ORBcv::MSERcv::FastFeatureDetectorcv::AgastFeatureDetectorcv::GFTTDetectorcv::SimpleBlobDetectorcv::KAZEcv::AKAZEcv::xfeatures2d::FREAKcv::xfeatures2d::StarDetectorcv::xfeatures2d::BriefDescriptorExtractorcv::xfeatures2d::LUCID

◆ 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");

为了使此方法起作用,派生类必须覆盖 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 为例)

Ptr<SVM> svm = Algorithm::loadFromString<SVM>(myStringModel);
以下是此函数的调用图

◆ read() [1/2]

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

为了使此方法起作用,派生类必须覆盖 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]

◆ 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

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