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
1.9.6