Skip to content

Commit ef6b2e6

Browse files
author
AleksandrPanov
committed
add writeDictionary(), dict distance, fix readDictionary(), readDetectorParameters()
1 parent 56d492c commit ef6b2e6

15 files changed

+96
-79
lines changed

modules/aruco/include/opencv2/aruco.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ struct CV_EXPORTS_W DetectorParameters {
151151

152152
DetectorParameters();
153153
CV_WRAP static Ptr<DetectorParameters> create();
154-
CV_WRAP static bool readDetectorParameters(const FileNode& fn, Ptr<DetectorParameters>& params);
154+
CV_WRAP bool readDetectorParameters(const FileNode& fn);
155155

156156
CV_PROP_RW int adaptiveThreshWinSizeMin;
157157
CV_PROP_RW int adaptiveThreshWinSizeMax;

modules/aruco/include/opencv2/aruco/dictionary.hpp

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,9 @@ class CV_EXPORTS_W Dictionary {
101101
* ...
102102
* marker_34: "011111010000111011111110110101100101"
103103
*/
104-
CV_WRAP static bool readDictionary(const cv::FileNode& fn, cv::Ptr<cv::aruco::Dictionary> &dictionary);
104+
CV_WRAP bool readDictionary(const cv::FileNode& fn);
105105

106+
CV_WRAP void writeDictionary(Ptr<FileStorage>& fs);
106107
/**
107108
* @see getPredefinedDictionary
108109
*/
@@ -149,23 +150,23 @@ class CV_EXPORTS_W Dictionary {
149150
distance
150151
*/
151152
enum PREDEFINED_DICTIONARY_NAME {
152-
DICT_4X4_50 = 0,
153-
DICT_4X4_100,
154-
DICT_4X4_250,
155-
DICT_4X4_1000,
156-
DICT_5X5_50,
157-
DICT_5X5_100,
158-
DICT_5X5_250,
159-
DICT_5X5_1000,
160-
DICT_6X6_50,
161-
DICT_6X6_100,
162-
DICT_6X6_250,
163-
DICT_6X6_1000,
164-
DICT_7X7_50,
165-
DICT_7X7_100,
166-
DICT_7X7_250,
167-
DICT_7X7_1000,
168-
DICT_ARUCO_ORIGINAL,
153+
DICT_4X4_50 = 0, ///< 4x4 bits, minimum hamming distance between any two codes = 4, 50 codes
154+
DICT_4X4_100, ///< 4x4 bits, minimum hamming distance between any two codes = 3, 100 codes
155+
DICT_4X4_250, ///< 4x4 bits, minimum hamming distance between any two codes = 3, 250 codes
156+
DICT_4X4_1000, ///< 4x4 bits, minimum hamming distance between any two codes = 2, 1000 codes
157+
DICT_5X5_50, ///< 5x5 bits, minimum hamming distance between any two codes = 8, 50 codes
158+
DICT_5X5_100, ///< 5x5 bits, minimum hamming distance between any two codes = 7, 100 codes
159+
DICT_5X5_250, ///< 5x5 bits, minimum hamming distance between any two codes = 6, 250 codes
160+
DICT_5X5_1000, ///< 5x5 bits, minimum hamming distance between any two codes = 5, 1000 codes
161+
DICT_6X6_50, ///< 6x6 bits, minimum hamming distance between any two codes = 13, 50 codes
162+
DICT_6X6_100, ///< 6x6 bits, minimum hamming distance between any two codes = 12, 100 codes
163+
DICT_6X6_250, ///< 6x6 bits, minimum hamming distance between any two codes = 11, 250 codes
164+
DICT_6X6_1000, ///< 6x6 bits, minimum hamming distance between any two codes = 9, 1000 codes
165+
DICT_7X7_50, ///< 7x7 bits, minimum hamming distance between any two codes = 19, 50 codes
166+
DICT_7X7_100, ///< 7x7 bits, minimum hamming distance between any two codes = 18, 100 codes
167+
DICT_7X7_250, ///< 7x7 bits, minimum hamming distance between any two codes = 17, 250 codes
168+
DICT_7X7_1000, ///< 7x7 bits, minimum hamming distance between any two codes = 14, 1000 codes
169+
DICT_ARUCO_ORIGINAL, ///< 6x6 bits, minimum hamming distance between any two codes = 3, 1024 codes
169170
DICT_APRILTAG_16h5, ///< 4x4 bits, minimum hamming distance between any two codes = 5, 30 codes
170171
DICT_APRILTAG_25h9, ///< 5x5 bits, minimum hamming distance between any two codes = 9, 35 codes
171172
DICT_APRILTAG_36h10, ///< 6x6 bits, minimum hamming distance between any two codes = 10, 2320 codes

modules/aruco/samples/calibrate_camera.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ int main(int argc, char *argv[]) {
104104
Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();
105105
if(parser.has("dp")) {
106106
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
107-
bool readOk = aruco::DetectorParameters::readDetectorParameters(fs.root(), detectorParams);
107+
bool readOk = detectorParams->readDetectorParameters(fs.root());
108108
if(!readOk) {
109109
cerr << "Invalid detector parameters file" << endl;
110110
return 0;
@@ -134,14 +134,14 @@ int main(int argc, char *argv[]) {
134134
waitTime = 10;
135135
}
136136

137-
Ptr<aruco::Dictionary> dictionary;
137+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
138138
if (parser.has("d")) {
139139
int dictionaryId = parser.get<int>("d");
140140
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
141141
}
142142
else if (parser.has("cd")) {
143143
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
144-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
144+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
145145
if(!readOk) {
146146
cerr << "Invalid dictionary file" << endl;
147147
return 0;

modules/aruco/samples/calibrate_camera_charuco.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ int main(int argc, char *argv[]) {
105105
Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();
106106
if(parser.has("dp")) {
107107
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
108-
bool readOk = aruco::DetectorParameters::readDetectorParameters(fs.root(), detectorParams);
108+
bool readOk = detectorParams->readDetectorParameters(fs.root());
109109
if(!readOk) {
110110
cerr << "Invalid detector parameters file" << endl;
111111
return 0;
@@ -135,14 +135,14 @@ int main(int argc, char *argv[]) {
135135
waitTime = 10;
136136
}
137137

138-
Ptr<aruco::Dictionary> dictionary;
138+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
139139
if (parser.has("d")) {
140140
int dictionaryId = parser.get<int>("d");
141141
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
142142
}
143143
else if (parser.has("cd")) {
144144
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
145-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
145+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
146146
if(!readOk) {
147147
cerr << "Invalid dictionary file" << endl;
148148
return 0;

modules/aruco/samples/create_board.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ int main(int argc, char *argv[]) {
9696
imageSize.height =
9797
markersY * (markerLength + markerSeparation) - markerSeparation + 2 * margins;
9898

99-
Ptr<aruco::Dictionary> dictionary;
99+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
100100
if (parser.has("d")) {
101101
int dictionaryId = parser.get<int>("d");
102102
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
103103
}
104104
else if (parser.has("cd")) {
105105
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
106-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
106+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
107107
if(!readOk)
108108
{
109109
std::cerr << "Invalid dictionary file" << std::endl;

modules/aruco/samples/create_board_charuco.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,14 @@ int main(int argc, char *argv[]) {
9393
return 0;
9494
}
9595

96-
Ptr<aruco::Dictionary> dictionary;
96+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
9797
if (parser.has("d")) {
9898
int dictionaryId = parser.get<int>("d");
9999
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
100100
}
101101
else if (parser.has("cd")) {
102102
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
103-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
103+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
104104
if(!readOk) {
105105
std::cerr << "Invalid dictionary file" << std::endl;
106106
return 0;

modules/aruco/samples/create_marker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,14 @@ int main(int argc, char *argv[]) {
8484
return 0;
8585
}
8686

87-
Ptr<aruco::Dictionary> dictionary;
87+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
8888
if (parser.has("d")) {
8989
int dictionaryId = parser.get<int>("d");
9090
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
9191
}
9292
else if (parser.has("cd")) {
9393
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
94-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
94+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
9595
if(!readOk) {
9696
std::cerr << "Invalid dictionary file" << std::endl;
9797
return 0;

modules/aruco/samples/detect_board.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ int main(int argc, char *argv[]) {
100100
Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();
101101
if(parser.has("dp")) {
102102
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
103-
bool readOk = aruco::DetectorParameters::readDetectorParameters(fs.root(), detectorParams);
103+
bool readOk = detectorParams->readDetectorParameters(fs.root());
104104
if(!readOk) {
105105
cerr << "Invalid detector parameters file" << endl;
106106
return 0;
@@ -118,14 +118,14 @@ int main(int argc, char *argv[]) {
118118
return 0;
119119
}
120120

121-
Ptr<aruco::Dictionary> dictionary;
121+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
122122
if (parser.has("d")) {
123123
int dictionaryId = parser.get<int>("d");
124124
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
125125
}
126126
else if (parser.has("cd")) {
127127
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
128-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
128+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
129129
if(!readOk) {
130130
cerr << "Invalid dictionary file" << endl;
131131
return 0;

modules/aruco/samples/detect_board_charuco.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ int main(int argc, char *argv[]) {
102102
Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();
103103
if(parser.has("dp")) {
104104
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
105-
bool readOk = aruco::DetectorParameters::readDetectorParameters(fs.root(), detectorParams);
105+
bool readOk = detectorParams->readDetectorParameters(fs.root());
106106
if(!readOk) {
107107
cerr << "Invalid detector parameters file" << endl;
108108
return 0;
@@ -114,14 +114,14 @@ int main(int argc, char *argv[]) {
114114
return 0;
115115
}
116116

117-
Ptr<aruco::Dictionary> dictionary;
117+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
118118
if (parser.has("d")) {
119119
int dictionaryId = parser.get<int>("d");
120120
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
121121
}
122122
else if (parser.has("cd")) {
123123
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
124-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
124+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
125125
if(!readOk) {
126126
cerr << "Invalid dictionary file" << endl;
127127
return 0;

modules/aruco/samples/detect_diamonds.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ int main(int argc, char *argv[]) {
9090
Ptr<aruco::DetectorParameters> detectorParams = aruco::DetectorParameters::create();
9191
if(parser.has("dp")) {
9292
FileStorage fs(parser.get<string>("dp"), FileStorage::READ);
93-
bool readOk = aruco::DetectorParameters::readDetectorParameters(fs.root(), detectorParams);
93+
bool readOk = detectorParams->readDetectorParameters(fs.root());
9494
if(!readOk) {
9595
cerr << "Invalid detector parameters file" << endl;
9696
return 0;
@@ -114,14 +114,14 @@ int main(int argc, char *argv[]) {
114114
return 0;
115115
}
116116

117-
Ptr<aruco::Dictionary> dictionary;
117+
Ptr<aruco::Dictionary> dictionary = aruco::getPredefinedDictionary(0);
118118
if (parser.has("d")) {
119119
int dictionaryId = parser.get<int>("d");
120120
dictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME(dictionaryId));
121121
}
122122
else if (parser.has("cd")) {
123123
FileStorage fs(parser.get<std::string>("cd"), FileStorage::READ);
124-
bool readOk = aruco::Dictionary::readDictionary(fs.root(), dictionary);
124+
bool readOk = dictionary->aruco::Dictionary::readDictionary(fs.root());
125125
if(!readOk) {
126126
cerr << "Invalid dictionary file" << endl;
127127
return 0;

0 commit comments

Comments
 (0)