Skip to content

Commit d94f086

Browse files
author
AleksandrPanov
committed
fix aruco_faq.markdown
1 parent 9ca37bd commit d94f086

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

modules/aruco/tutorials/aruco_faq/aruco_faq.markdown

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,14 @@ The aruco module is based on the original ArUco library. A full description of t
2222
- My markers are not being detected correctly, what can I do?
2323

2424
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.
2727

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
30+
increasing `cv::aruco::DetectorParameters::adaptiveThreshWinSizeMax` value.
31+
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.
3133

3234

3335
- 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
6466
Yes, all the markers in a ChArUco board need to be in the same plane and their layout is fixed by the chessboard shape.
6567

6668

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?
6870

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
7072
plane and in a grid layout.
7173

7274

@@ -78,7 +80,7 @@ They are useful when you want to provide a conceptual meaning to any (or all) of
7880

7981
- Do I need to detect marker before board detection, ChArUco board detection or Diamond detection?
8082

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
8284
a list of detected markers from this function.
8385

8486

@@ -103,12 +105,12 @@ correction during the identification step.
103105
Dictionary generation should only be done once at the beginning of your application and it should take some seconds. If you are
104106
generating the dictionary on each iteration of your detection loop, you are doing it wrong.
105107

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.
107109

108110

109111
- I would like to use some markers of the original ArUco library that I have already printed, can I use them?
110112

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.
112114

113115

114116
- 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
128130

129131
- Do I need to store the Board information in a file so I can use it in different executions?
130132

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.
132135
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.
133136

134137
- Does the aruco module provide functions to save the Dictionary or Board to file?
135138

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.
137140

138141

139142
- 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
158161
In general, the ambiguity can be solved, if the camera is near to the marker.
159162
However, as the marker becomes small, the errors in the corner estimation grows and ambiguity comes as a problem.
160163
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.
162165
More in [this issue](https://github.com/opencv/opencv/issues/8813).

0 commit comments

Comments
 (0)