class cv::Range

Overview

Template class specifying a continuous subsequence (slice) of a sequence. More…

#include <types.hpp>

class Range
{
public:
    // fields

    int end;
    int start;

    // construction

    Range();

    Range(
        int _start,
        int _end
        );

    // methods

    bool
    empty() const;

    int
    size() const;

    static
    Range
    all();
};

Detailed Documentation

Template class specifying a continuous subsequence (slice) of a sequence.

The class is used to specify a row or a column span in a matrix (Mat) and for many other purposes. Range(a,b) is basically the same as a:b in Matlab or a..b in Python. As in Python, start is an inclusive left boundary of the range and end is an exclusive right boundary of the range. Such a half-opened interval is usually denoted as \([start,end)\).

The static method Range::all() returns a special variable that means “the whole sequence” or “the whole range”, just like ” : ” in Matlab or ” … ” in Python. All the methods and functions in OpenCV that take Range support this special Range::all() value. But, of course, in case of your own custom processing, you will probably have to check and handle it explicitly:

void my_function(..., const Range& r, ....)
{
    if(r == Range::all()) {
        // process all the data
    }
    else {
        // process [r.start, r.end)
    }
}