Skip to content

Commit e74e78d

Browse files
update tutorial
1 parent c72af13 commit e74e78d

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

modules/aruco/tutorials/aruco_faq/aruco_faq.markdown

+14-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ in the ```DetectorParameters``` object. The first thing you can do is checking i
2626
as rejected candidates by the ```detectMarkers()``` function. Depending on this, you should try to modify different parameters.
2727

2828
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.
2931

3032

3133
- What are the benefits of ArUco boards? What are the drawbacks?
@@ -101,7 +103,7 @@ correction during the identification step.
101103
Dictionary generation should only be done once at the beginning of your application and it should take some seconds. If you are
102104
generating the dictionary on each iteration of your detection loop, you are doing it wrong.
103105

104-
Furthermore, it is recommendable to save the dictionary to a file and read it on every execution so you dont need to generate it.
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.
105107

106108

107109
- I would like to use some markers of the original ArUco library that I have already printed, can I use them?
@@ -131,7 +133,7 @@ If you manually modify the marker ids of the boards, or if you use a different t
131133

132134
- Does the aruco module provide functions to save the Dictionary or Board to file?
133135

134-
Not right now. However the data member of both the dictionary and board classes are public and can be easily stored.
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.
135137

136138

137139
- Alright, but how can I render a 3d model to create an augmented reality application?
@@ -149,3 +151,13 @@ You can cite the original ArUco library:
149151
> S. Garrido-Jurado, R. Muñoz-Salinas, F. J. Madrid-Cuevas, and M. J. Marín-Jiménez. 2014.
150152
> "Automatic generation and detection of highly reliable fiducial markers under occlusion".
151153
> Pattern Recogn. 47, 6 (June 2014), 2280-2292. DOI=10.1016/j.patcog.2014.01.005
154+
155+
- Pose estimation markers are not being detected correctly, what can I do?
156+
157+
It is important to remark that the estimation of the pose using only 4 coplanar points is subject to ambiguity.
158+
In general, the ambiguity can be solved, if the camera is near to the marker.
159+
However, as the marker becomes small, the errors in the corner estimation grows and ambiguity comes as a problem.
160+
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 estimatePoseBoard(), estimatePoseCharucoBoard().
162+
Use solvePnP() with the ```SOLVEPNP_IPPE_SQUARE``` option.
163+
More in [this issue](https://github.com/opencv/opencv/issues/8813).

0 commit comments

Comments
 (0)