Dictionary is a set of unique ArUco markers of the same size. More...
#include <aruco_dictionary.hpp>
Public Member Functions | |
CV_WRAP | Dictionary () |
CV_WRAP | Dictionary (const Mat &bytesList, int _markerSize, int maxcorr=0) |
Basic ArUco dictionary constructor. More... | |
CV_WRAP bool | readDictionary (const cv::FileNode &fn) |
Read a new dictionary from FileNode. More... | |
CV_WRAP void | writeDictionary (FileStorage &fs, const String &name=String()) |
Write a dictionary to FileStorage, format is the same as in readDictionary(). More... | |
CV_WRAP bool | identify (const Mat &onlyBits, CV_OUT int &idx, CV_OUT int &rotation, double maxCorrectionRate) const |
Given a matrix of bits. Returns whether if marker is identified or not. More... | |
CV_WRAP int | getDistanceToId (InputArray bits, int id, bool allRotations=true) const |
Returns Hamming distance of the input bits to the specific id. More... | |
CV_WRAP void | generateImageMarker (int id, int sidePixels, OutputArray _img, int borderBits=1) const |
Generate a canonical marker image. More... | |
Static Public Member Functions | |
static CV_WRAP Mat | getByteListFromBits (const Mat &bits) |
Transform matrix of bits to list of bytes with 4 marker rotations. More... | |
static CV_WRAP Mat | getBitsFromByteList (const Mat &byteList, int markerSize) |
Transform list of bytes to matrix of bits. More... | |
Public Attributes | |
CV_PROP_RW Mat | bytesList |
marker code information. See class description for more details More... | |
CV_PROP_RW int | markerSize |
number of bits per dimension More... | |
CV_PROP_RW int | maxCorrectionBits |
maximum number of bits that can be corrected More... | |
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:
nbytes = ceil(markerSize*markerSize/8.)
bytes4*nbytes
//bytes without rotation/bytes with rotation 1/bytes with rotation 2/bytes with rotation 3//
So bytesList.ptr(i)[k*nbytes + j]
is the j-th byte of i-th marker, in its k-th rotation. 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]
CV_WRAP cv::aruco::Dictionary::Dictionary | ( | ) |
CV_WRAP cv::aruco::Dictionary::Dictionary | ( | const Mat & | bytesList, |
int | _markerSize, | ||
int | maxcorr = 0 |
||
) |
Basic ArUco dictionary constructor.
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 |
CV_WRAP void cv::aruco::Dictionary::generateImageMarker | ( | int | id, |
int | sidePixels, | ||
OutputArray | _img, | ||
int | borderBits = 1 |
||
) | const |
Generate a canonical marker image.
|
static |
Transform list of bytes to matrix of bits.
Transform matrix of bits to list of bytes with 4 marker rotations.
CV_WRAP 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
CV_WRAP bool cv::aruco::Dictionary::identify | ( | const Mat & | onlyBits, |
CV_OUT int & | idx, | ||
CV_OUT 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.
CV_WRAP 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"
CV_WRAP void cv::aruco::Dictionary::writeDictionary | ( | FileStorage & | fs, |
const String & | name = String() |
||
) |
Write a dictionary to FileStorage, format is the same as in readDictionary().
CV_PROP_RW Mat cv::aruco::Dictionary::bytesList |
marker code information. See class description for more details
CV_PROP_RW int cv::aruco::Dictionary::markerSize |
number of bits per dimension
CV_PROP_RW int cv::aruco::Dictionary::maxCorrectionBits |
maximum number of bits that can be corrected