Overview | Package | Class | Tree | Index | Help

OpenCV 2.4.3.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.opencv.core
Class Algorithm

    java.lang.Object
      org.opencv.core.Algorithm

Direct Known Subclasses:
  BackgroundSubtractor, EM, FaceRecognizer

    public class Algorithm

extends java.lang.Object

This is a base class for all more or less complex algorithms in OpenCV, 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.).

The class provides the following features for all derived classes:

- so called "virtual constructor". That is, each Algorithm derivative is registered at program start and you can get the list of registered algorithms and create instance of a particular algorithm by its name (see `Algorithm.create`). If you plan to add your own algorithms, it is good practice to add a unique prefix to your algorithms to distinguish them from other algorithms.
- setting/retrieving algorithm parameters by name. If you used video capturing functionality from OpenCV highgui module, you are probably familar with `cvSetCaptureProperty()`, `cvGetCaptureProperty()`, `VideoCapture.set()` and `VideoCapture.get()`. `Algorithm` provides similar method where instead of integer id's you specify the parameter names as text strings. See `Algorithm.set` and `Algorithm.get` for details.
- reading and writing parameters from/to XML or YAML files. Every Algorithm derivative can store all its parameters and then read them back. There is no need to re-implement it each time.

Here is example of SIFT use in your application via Algorithm interface:

#include "opencv2/opencv.hpp" ``

// C++ code:

#include "opencv2/nonfree/nonfree.hpp"...

initModule_nonfree(); // to load SURF/SIFT etc.

Ptr sift = Algorithm.create("Feature2D.SIFT");

FileStorage fs("sift_params.xml", FileStorage.READ);

if(fs.isOpened()) // if we have file with parameters, read them

sift->read(fs["sift_params"]);

fs.release();

else // else modify the parameters and store them; user can later edit the file to use different parameters

sift->set("contrastThreshold", 0.01f); // lower the contrast threshold, compared to the default value

WriteStructContext ws(fs, "sift_params", CV_NODE_MAP);

sift->write(fs);

Mat image = imread("myimage.png", 0), descriptors;

vector keypoints;

(*sift)(image, noArray(), keypoints, descriptors);

See Also:
  org.opencv.core.Algorithm

Field Summary
`protected long` | `nativeObj`

Constructor Summary
`protected` | `Algorithm(long addr)`

Method Summary
`protected void` | `finalize()`
`boolean` | `getBool(java.lang.String name)`
`double` | `getDouble(java.lang.String name)`
`int` | `getInt(java.lang.String name)`
`Mat` | `getMat(java.lang.String name)`
`java.util.List<Mat>` | `getMatVector(java.lang.String name)`
`java.lang.String` | `getString(java.lang.String name)`
`java.lang.String` | `paramHelp(java.lang.String name)`
`int` | `paramType(java.lang.String name)`
`void` | `setBool(java.lang.String name, boolean value)`
`void` | `setDouble(java.lang.String name, double value)`
`void` | `setInt(java.lang.String name, int value)`
`void` | `setMat(java.lang.String name, Mat value)`
`void` | `setMatVector(java.lang.String name, java.util.List<Mat> value)`
`void` | `setString(java.lang.String name, java.lang.String value)`

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### nativeObj

    protected final long nativeObj

Constructor Detail

### Algorithm

    protected Algorithm(long addr)

Method Detail

### finalize

    protected void finalize()
                     throws java.lang.Throwable

  Overrides:
    `finalize` in class `java.lang.Object`
  Throws:
    `java.lang.Throwable`

### getBool

    public boolean getBool(java.lang.String name)

### getDouble

    public double getDouble(java.lang.String name)

### getInt

    public int getInt(java.lang.String name)

### getMat

    public Mat getMat(java.lang.String name)

### getMatVector

    public java.util.List<Mat> getMatVector(java.lang.String name)

### getString

    public java.lang.String getString(java.lang.String name)

### paramHelp

    public java.lang.String paramHelp(java.lang.String name)

### paramType

    public int paramType(java.lang.String name)

### setBool

    public void setBool(java.lang.String name,
                        boolean value)

### setDouble

    public void setDouble(java.lang.String name,
                          double value)

### setInt

    public void setInt(java.lang.String name,
                       int value)

### setMat

    public void setMat(java.lang.String name,
                       Mat value)

### setMatVector

    public void setMatVector(java.lang.String name,
                             java.util.List<Mat> value)

### setString

    public void setString(java.lang.String name,
                          java.lang.String value)

Overview | Package | Class | Tree | Index | Help

Official OpenCV 2.4 Documentation
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD