You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/aruco/tutorials/aruco_faq/aruco_faq.markdown
+16-13Lines changed: 16 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -22,12 +22,14 @@ The aruco module is based on the original ArUco library. A full description of t
22
22
- My markers are not being detected correctly, what can I do?
23
23
24
24
There can be many factors that avoid the correct detection of markers. You probably need to adjust some of the parameters
25
-
in the ```DetectorParameters``` object. The first thing you can do is checking if your markers are returned
26
-
as rejected candidates by the ```detectMarkers()``` function. Depending on this, you should try to modify different parameters.
25
+
in the `cv::aruco::DetectorParameters` object. The first thing you can do is checking if your markers are returned
26
+
as rejected candidates by the `cv::aruco::ArucoDetector::detectMarkers()` function. Depending on this, you should try to modify different parameters.
27
27
28
-
If you are using a ArUco board, you can also try the ```refineDetectedMarkers()``` function.
29
-
If you are [using big markers](https://github.com/opencv/opencv_contrib/issues/2811) (400x400 pixels and more), try increasing ```adaptiveThreshWinSizeMax``` value.
30
-
Also avoid [narrow borders](https://github.com/opencv/opencv_contrib/issues/2492) (5% or less of the marker perimeter, adjusted by ```minMarkerDistanceRate```) around markers.
28
+
If you are using a ArUco board, you can also try the `cv::aruco::ArucoDetector::refineDetectedMarkers()` function.
29
+
If you are [using big markers](https://github.com/opencv/opencv_contrib/issues/2811) (400x400 pixels and more), try
Also avoid [narrow borders around the ArUco marker](https://github.com/opencv/opencv_contrib/issues/2492)
32
+
(5% or less of the marker perimeter, adjusted by `cv::aruco::DetectorParameters::minMarkerDistanceRate`) around markers.
31
33
32
34
33
35
- What are the benefits of ArUco boards? What are the drawbacks?
@@ -64,9 +66,9 @@ No, the marker corners in a ArUco board can be placed anywhere in its 3d coordin
64
66
Yes, all the markers in a ChArUco board need to be in the same plane and their layout is fixed by the chessboard shape.
65
67
66
68
67
-
- What is the difference between a ```Board``` object and a ```GridBoard``` object?
69
+
- What is the difference between a `cv::aruco::Board` object and a `cv::aruco::GridBoard` object?
68
70
69
-
The ```GridBoard``` class is a specific type of board that inherits from ```Board``` class. A ```GridBoard``` object is a board whose markers are placed in the same
71
+
The `cv::aruco::GridBoard` class is a specific type of board that inherits from `cv::aruco::Board` class. A `cv::aruco::GridBoard` object is a board whose markers are placed in the same
70
72
plane and in a grid layout.
71
73
72
74
@@ -78,7 +80,7 @@ They are useful when you want to provide a conceptual meaning to any (or all) of
78
80
79
81
- Do I need to detect marker before board detection, ChArUco board detection or Diamond detection?
80
82
81
-
Yes, the detection of single markers is a basic tool in the aruco module. It is done using the ```detectMarkers()``` function. The rest of functionalities receives
83
+
Yes, the detection of single markers is a basic tool in the aruco module. It is done using the `cv::aruco::DetectorParameters::detectMarkers()` function. The rest of functionalities receives
82
84
a list of detected markers from this function.
83
85
84
86
@@ -103,12 +105,12 @@ correction during the identification step.
103
105
Dictionary generation should only be done once at the beginning of your application and it should take some seconds. If you are
104
106
generating the dictionary on each iteration of your detection loop, you are doing it wrong.
105
107
106
-
Furthermore, it is recommendable to save the dictionary to a file with ```cv::aruco::Dictionary::writeDictionary()``` and read it with ```cv::aruco::Dictionary::readDictionary()``` on every execution, so you don't need to generate it.
108
+
Furthermore, it is recommendable to save the dictionary to a file with `cv::aruco::Dictionary::writeDictionary()` and read it with `cv::aruco::Dictionary::readDictionary()` on every execution, so you don't need to generate it.
107
109
108
110
109
111
- I would like to use some markers of the original ArUco library that I have already printed, can I use them?
110
112
111
-
Yes, one of the predefined dictionary is ```DICT_ARUCO_ORIGINAL```, which detects the marker of the original ArUco library with the same identifiers.
113
+
Yes, one of the predefined dictionary is `cv::aruco::DICT_ARUCO_ORIGINAL`, which detects the marker of the original ArUco library with the same identifiers.
112
114
113
115
114
116
- Can I use the Board configuration file of the original ArUco library in this module?
@@ -128,12 +130,13 @@ If you are using one of the predefined dictionaries, it is not necessary. Otherw
128
130
129
131
- Do I need to store the Board information in a file so I can use it in different executions?
130
132
131
-
If you are using a ```GridBoard``` or a ```ChArUco``` board you only need to store the board measurements that are provided to the ```GridBoard::create()``` function or in or `ChArUco` constructor.
133
+
If you are using a `cv::aruco::GridBoard` or a `cv::aruco::CharucoBoard` you only need to store the board measurements
134
+
that are provided to the `cv::aruco::GridBoard::GridBoard()` constructor or in or `cv::aruco::CharucoBoard` constructor.
132
135
If you manually modify the marker ids of the boards, or if you use a different type of board, you should save your board object to file.
133
136
134
137
- Does the aruco module provide functions to save the Dictionary or Board to file?
135
138
136
-
You can use ```cv::aruco::Dictionary::writeDictionary()``` and ```cv::aruco::Dictionary::readDictionary()``` for ```cv::aruco::Dictionary```. The data member of board classes are public and can be easily stored.
139
+
You can use `cv::aruco::Dictionary::writeDictionary()` and `cv::aruco::Dictionary::readDictionary()` for `cv::aruco::Dictionary`. The data member of board classes are public and can be easily stored.
137
140
138
141
139
142
- Alright, but how can I render a 3d model to create an augmented reality application?
@@ -158,5 +161,5 @@ It is important to remark that the estimation of the pose using only 4 coplanar
158
161
In general, the ambiguity can be solved, if the camera is near to the marker.
159
162
However, as the marker becomes small, the errors in the corner estimation grows and ambiguity comes as a problem.
160
163
Try increasing the size of the marker you're using, and you can also try non-symmetrical (aruco_dict_utils.cpp) markers to avoid collisions.
161
-
Use multiple markers (ArUco/ChArUco/Diamonds boards) and pose estimation with solvePnP() with the ```SOLVEPNP_IPPE_SQUARE``` option.
164
+
Use multiple markers (ArUco/ChArUco/Diamonds boards) and pose estimation with solvePnP() with the `cv::SOLVEPNP_IPPE_SQUARE` option.
162
165
More in [this issue](https://github.com/opencv/opencv/issues/8813).
0 commit comments