Returns the algorithm string identifier. This string is used as top level xml/yml node tag when the object is saved to a file or string.
Saves the algorithm to a file. In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
This is static template method of [Algorithm]. It's usage is following (in the case of SVM):
Ptr<SVM> svm = Algorithm::load<SVM>("my_svm_model.xml");
In order to make this method work, the derived class must overwrite [Algorithm::read](const [FileNode]& fn).
Name of the file to read.
The optional name of the node to read (if empty, the first top-level node will be used)
This is static template method of [Algorithm]. It's usage is following (in the case of SVM):
Ptr<SVM> svm = Algorithm::loadFromString<SVM>(myStringModel);
The string variable containing the model you want to load.
The optional name of the node to read (if empty, the first top-level node will be used)
This is static template method of [Algorithm]. It's usage is following (in the case of SVM):
cv::FileStorage fsRead("example.xml", FileStorage::READ);
Ptr<SVM> svm = Algorithm::read<SVM>(fsRead.root());
In order to make this method work, the derived class must overwrite [Algorithm::read](const [FileNode]& fn) and also have static create() method without parameters (or with all the optional parameters)
Generated using TypeDoc
especially for classes of algorithms, for which there can be multiple implementations. The examples are stereo correspondence (for which there are algorithms like block matching, semi-global block matching, graph-cut etc.), background subtraction (which can be done using mixture-of-gaussians models, codebook-based algorithm etc.), optical flow (block matching, Lucas-Kanade, Horn-Schunck etc.).
Here is example of SimpleBlobDetector use in your application via Algorithm interface:
Ptr<Feature2D> sbd = SimpleBlobDetector::create(); FileStorage fs_read("SimpleBlobDetector_params.xml", FileStorage::READ); if (fs_read.isOpened()) // if we have file with parameters, read them { sbd->read(fs_read.root()); fs_read.release(); } else // else modify the parameters and store them; user can later edit the file to use different parameters { 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);
Source: opencv2/core.hpp.