Dictionary is a set of unique ArUco markers of the same size. More...
#include <opencv2/objdetect/aruco_dictionary.hpp>
Public Member Functions | |
Dictionary () | |
Dictionary (const Mat &bytesList, int _markerSize, int maxcorr=0) | |
Basic ArUco dictionary constructor. | |
void | generateImageMarker (int id, int sidePixels, OutputArray _img, int borderBits=1) const |
Generate a canonical marker image. | |
int | getDistanceToId (InputArray bits, int id, bool allRotations=true) const |
Returns Hamming distance of the input bits to the specific id. | |
bool | identify (const Mat &onlyBits, int &idx, int &rotation, double maxCorrectionRate) const |
Given a matrix of bits. Returns whether if marker is identified or not. | |
bool | readDictionary (const cv::FileNode &fn) |
Read a new dictionary from FileNode. | |
void | writeDictionary (FileStorage &fs, const String &name=String()) |
Write a dictionary to FileStorage, format is the same as in readDictionary(). | |
Static Public Member Functions | |
static Mat | getBitsFromByteList (const Mat &byteList, int markerSize) |
Transform list of bytes to matrix of bits. | |
static Mat | getByteListFromBits (const Mat &bits) |
Transform matrix of bits to list of bytes with 4 marker rotations. | |
Public Attributes | |
Mat | bytesList |
marker code information. See class description for more details | |
int | markerSize |
number of bits per dimension | |
int | maxCorrectionBits |
maximum number of bits that can be corrected | |
Detailed Description
Dictionary is a set of unique ArUco markers of the same size.
bytesList
storing as 2-dimensions Mat with 4-th channels (CV_8UC4 type was used) and contains the marker codewords where:
- bytesList.rows is the dictionary size
- each marker is encoded using
nbytes = ceil(markerSize*markerSize/8.)
bytes - each row contains all 4 rotations of the marker, so its length is
4*nbytes
- the byte order in the bytesList[i] row:
//bytes without rotation/bytes with rotation 1/bytes with rotation 2/bytes with rotation 3//
SobytesList.ptr(i)[k*nbytes + j]
is the j-th byte of i-th marker, in its k-th rotation.- Note
- Python bindings generate matrix with shape of bytesList
dictionary_size x nbytes x 4
, but it should be indexed like C++ version. Python example for j-th byte of i-th marker, in its k-th rotation:aruco_dict.bytesList[id].ravel()[k*nbytes + j]
Constructor & Destructor Documentation
◆ Dictionary() [1/2]
cv::aruco::Dictionary::Dictionary | ( | ) |
◆ Dictionary() [2/2]
cv::aruco::Dictionary::Dictionary | ( | const Mat & | bytesList, |
int | _markerSize, | ||
int | maxcorr = 0 |
||
) |
Basic ArUco dictionary constructor.
- Parameters
-
bytesList bits for all ArUco markers in dictionary see memory layout in the class description _markerSize ArUco marker size in units maxcorr maximum number of bits that can be corrected
Member Function Documentation
◆ generateImageMarker()
void cv::aruco::Dictionary::generateImageMarker | ( | int | id, |
int | sidePixels, | ||
OutputArray | _img, | ||
int | borderBits = 1 |
||
) | const |
Generate a canonical marker image.
◆ getBitsFromByteList()
|
static |
Transform list of bytes to matrix of bits.
◆ getByteListFromBits()
Transform matrix of bits to list of bytes with 4 marker rotations.
◆ getDistanceToId()
int cv::aruco::Dictionary::getDistanceToId | ( | InputArray | bits, |
int | id, | ||
bool | allRotations = true |
||
) | const |
Returns Hamming distance of the input bits to the specific id.
If allRotations
flag is set, the four posible marker rotations are considered
◆ identify()
bool cv::aruco::Dictionary::identify | ( | const Mat & | onlyBits, |
int & | idx, | ||
int & | rotation, | ||
double | maxCorrectionRate | ||
) | const |
Given a matrix of bits. Returns whether if marker is identified or not.
Returns reference to the marker id in the dictionary (if any) and its rotation.
◆ readDictionary()
bool cv::aruco::Dictionary::readDictionary | ( | const cv::FileNode & | fn | ) |
Read a new dictionary from FileNode.
Dictionary example in YAML format:
nmarkers: 35
markersize: 6
maxCorrectionBits: 5
marker_0: "101011111011111001001001101100000000"
...
marker_34: "011111010000111011111110110101100101"
◆ writeDictionary()
void cv::aruco::Dictionary::writeDictionary | ( | FileStorage & | fs, |
const String & | name = String() |
||
) |
Write a dictionary to FileStorage, format is the same as in readDictionary().
Member Data Documentation
◆ bytesList
Mat cv::aruco::Dictionary::bytesList |
marker code information. See class description for more details
◆ markerSize
int cv::aruco::Dictionary::markerSize |
number of bits per dimension
◆ maxCorrectionBits
int cv::aruco::Dictionary::maxCorrectionBits |
maximum number of bits that can be corrected
The documentation for this class was generated from the following file:
- opencv2/objdetect/aruco_dictionary.hpp