aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/argaze/ArFeatures.py17
-rw-r--r--src/argaze/ArUcoMarkers/ArUcoCamera.py15
-rw-r--r--src/argaze/ArUcoMarkers/ArUcoDetector.py22
-rw-r--r--src/argaze/ArUcoMarkers/ArUcoMarkersGroup.py43
4 files changed, 50 insertions, 47 deletions
diff --git a/src/argaze/ArFeatures.py b/src/argaze/ArFeatures.py
index edeac6b..84eae12 100644
--- a/src/argaze/ArFeatures.py
+++ b/src/argaze/ArFeatures.py
@@ -478,7 +478,7 @@ class ArLayer():
Parameters:
draw_aoi_scene: AreaOfInterest.AOI2DScene.draw parameters (if None, no aoi scene is drawn)
- draw_aoi_matching: AOIMatcher.draw parameters (which depends of the loaded aoi matcher module, if None, no aoi matching is drawn)
+ draw_aoi_matching: AOIMatcher.draw parameters (which depends of the loaded aoi matcher module, if None, no aoi matching is drawn)
"""
# Use draw_parameters attribute if no parameters
@@ -1069,15 +1069,10 @@ class ArScene():
Define abstract Augmented Reality scene with ArLayers and ArFrames inside.
Parameters:
-
name: name of the scene
-
layers: dictionary of ArLayers to project once the pose is estimated: see [project][argaze.ArFeatures.ArScene.project] function below.
-
frames: dictionary to ArFrames to project once the pose is estimated: see [project][argaze.ArFeatures.ArScene.project] function below.
-
angle_tolerance: Optional angle error tolerance to validate marker pose in degree used into [estimate_pose][argaze.ArFeatures.ArScene.estimate_pose] function.
-
distance_tolerance: Optional distance error tolerance to validate marker pose in centimeter used into [estimate_pose][argaze.ArFeatures.ArScene.estimate_pose] function.
"""
name: str
@@ -1413,8 +1408,8 @@ class ArCamera(ArFrame):
"""Detect AR features from image and project scenes into camera frame.
Returns:
- - detection_time: AR features detection time in ms
- - exceptions: dictionary with exception raised per scene
+ detection time: AR features detection time in ms.
+ exception: dictionary with exception raised per scene.
"""
raise NotImplementedError('watch() method not implemented')
@@ -1422,7 +1417,8 @@ class ArCamera(ArFrame):
def look(self, timestamp: int|float, gaze_position: GazeFeatures.GazePosition):
"""Project timestamped gaze position into each scene frames.
- !!! warning watch method needs to be called first.
+ !!! warning
+ watch method needs to be called first.
"""
# Can't use camera frame when it is locked
@@ -1471,7 +1467,8 @@ class ArCamera(ArFrame):
def map(self):
"""Project camera frame background into scene frames background.
- .. warning:: watch method needs to be called first.
+ !!! warning
+ watch method needs to be called first.
"""
# Can't use camera frame when it is locked
diff --git a/src/argaze/ArUcoMarkers/ArUcoCamera.py b/src/argaze/ArUcoMarkers/ArUcoCamera.py
index 4c3f042..4f00a3a 100644
--- a/src/argaze/ArUcoMarkers/ArUcoCamera.py
+++ b/src/argaze/ArUcoMarkers/ArUcoCamera.py
@@ -37,6 +37,7 @@ class ArUcoCamera(ArFeatures.ArCamera):
"""
Define an ArCamera based on ArUco marker detection.
+ Parameters:
aruco_detector: ArUco marker detector
"""
@@ -144,9 +145,9 @@ class ArUcoCamera(ArFeatures.ArCamera):
"""Detect environment aruco markers from image and project scenes into camera frame.
Returns:
- - detection_time: aruco marker detection time in ms
- - exceptions: dictionary with exception raised per scene
- """
+ detection time: aruco marker detection time in ms.
+ exception: dictionary with exception raised per scene.
+ """
# Detect aruco markers
detection_time = self.aruco_detector.detect_markers(image)
@@ -215,10 +216,10 @@ class ArUcoCamera(ArFeatures.ArCamera):
"""Get frame image with ArUco detection visualisation.
Parameters:
- draw_detected_markers: ArucoMarker.draw parameters (if None, no marker drawn)
- draw_scenes: ArUcoScene.draw parameters (if None, no scene drawn)
- draw_optic_parameters_grid: OpticParameter.draw parameters (if None, no grid drawn)
- kwargs: ArCamera.image parameters
+ draw_detected_markers: ArucoMarker.draw parameters (if None, no marker drawn)
+ draw_scenes: ArUcoScene.draw parameters (if None, no scene drawn)
+ draw_optic_parameters_grid: OpticParameter.draw parameters (if None, no grid drawn)
+ kwargs: ArCamera.image parameters
"""
# Can't use camera frame when it is locked
diff --git a/src/argaze/ArUcoMarkers/ArUcoDetector.py b/src/argaze/ArUcoMarkers/ArUcoDetector.py
index 305bee2..490b75b 100644
--- a/src/argaze/ArUcoMarkers/ArUcoDetector.py
+++ b/src/argaze/ArUcoMarkers/ArUcoDetector.py
@@ -38,7 +38,8 @@ ArUcoDetectorType = TypeVar('ArUcoDetector', bound="ArUcoDetector")
class DetectorParameters():
"""Wrapper class around ArUco marker detector parameters.
- .. note:: More details on [opencv page](https://docs.opencv.org/4.x/d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html)
+ !!! note
+ More details on [opencv page](https://docs.opencv.org/4.x/d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html)
"""
__parameters = aruco.DetectorParameters()
@@ -107,7 +108,8 @@ class DetectorParameters():
"""Formated detector parameters string representation.
Parameters:
- spec: 'modified' to get only modified parameters."""
+ spec: 'modified' to get only modified parameters.
+ """
output = ''
@@ -257,11 +259,11 @@ class ArUcoDetector():
def detect_markers(self, image: numpy.array) -> float:
"""Detect all ArUco markers into an image.
- .. danger:: DON'T MIRROR IMAGE
- It makes the markers detection to fail.
+ !!! danger "DON'T MIRROR IMAGE"
+ It makes the markers detection to fail.
Returns:
- - detection time: marker detection time in ms
+ detection time: marker detection time in ms.
"""
# Reset detected markers data
@@ -369,8 +371,8 @@ class ArUcoDetector():
def detect_board(self, image: numpy.array, board, expected_markers_number):
"""Detect ArUco markers board in image setting up the number of detected markers needed to agree detection.
- .. danger:: DON'T MIRROR IMAGE
- It makes the markers detection to fail.
+ !!! danger "DON'T MIRROR IMAGE"
+ It makes the markers detection to fail.
"""
# detect markers from gray picture
@@ -406,9 +408,11 @@ class ArUcoDetector():
@property
def detection_metrics(self) -> Tuple[int, dict]:
"""Get marker detection metrics.
+
Returns:
- number of detect function call
- dict with number of detection for each marker identifier"""
+ number of detect function call
+ dict with number of detection for each marker identifier
+ """
return self.__detection_count, Counter(self.__detected_ids)
diff --git a/src/argaze/ArUcoMarkers/ArUcoMarkersGroup.py b/src/argaze/ArUcoMarkers/ArUcoMarkersGroup.py
index 5b6c69d..4a43965 100644
--- a/src/argaze/ArUcoMarkers/ArUcoMarkersGroup.py
+++ b/src/argaze/ArUcoMarkers/ArUcoMarkersGroup.py
@@ -79,29 +79,31 @@ def make_euler_rotation_vector(R):
@dataclass(frozen=True)
class Place():
- """Define a place as a pose and a marker."""
+ """Define a place as a pose and a marker.
- translation: numpy.array
- """Position in group referential."""
+ Parameters:
+ translation: position in group referential.
+ rotation: rotation in group referential.
+ marker: ArUco marker linked to the place.
+ """
+ translation: numpy.array
rotation: numpy.array
- """Rotation in group referential."""
-
marker: dict
- """ArUco marker linked to the place."""
@dataclass
class ArUcoMarkersGroup():
- """Handle group of ArUco markers as one unique spatial entity and estimate its pose."""
+ """Handle group of ArUco markers as one unique spatial entity and estimate its pose.
- marker_size: float = field(default=0.)
- """Expected size of all markers in the group."""
+ Parameters:
+ marker_size: expected size of all markers in the group.
+ dictionary: expected dictionary of all markers in the group.
+ places: expected markers place.
+ """
+ marker_size: float = field(default=0.)
dictionary: ArUcoMarkersDictionary.ArUcoMarkersDictionary = field(default_factory=ArUcoMarkersDictionary.ArUcoMarkersDictionary)
- """Expected dictionary of all markers in the group."""
-
places: dict = field(default_factory=dict)
- """Expected markers place"""
def __post_init__(self):
"""Init group pose and places pose."""
@@ -166,13 +168,13 @@ class ArUcoMarkersGroup():
"""Load ArUco markers group from .obj file.
!!! note
- Expected object (o) name format: <DICTIONARY>#<IDENTIFIER>_Marker
+ Expected object (o) name format: <DICTIONARY>#<IDENTIFIER>_Marker
!!! note
- All markers have to belong to the same dictionary.
+ All markers have to belong to the same dictionary.
!!! note
- Marker normal vectors (vn) expected.
+ Marker normal vectors (vn) expected.
"""
@@ -360,8 +362,8 @@ class ArUcoMarkersGroup():
"""Sort markers belonging to the group from given detected markers dict (cf ArUcoDetector.detect_markers()).
Returns:
- dict of markers belonging to this group
- dict of remaining markers not belonging to this group
+ dict of markers belonging to this group
+ dict of remaining markers not belonging to this group
"""
group_markers = {}
@@ -434,9 +436,9 @@ class ArUcoMarkersGroup():
"""Evaluate if given markers configuration match related places configuration.
Returns:
- dict of consistent markers
- dict of unconsistent markers
- dict of identified distance or angle unconsistencies and out-of-bounds values
+ dict of consistent markers
+ dict of unconsistent markers
+ dict of identified distance or angle unconsistencies and out-of-bounds values
"""
consistent_markers = {}
@@ -684,7 +686,6 @@ class ArUcoMarkersGroup():
"""Draw group axes and places.
Parameters:
-
draw_axes: draw_axes parameters (if None, no axes drawn)
draw_places: draw_places parameters (if None, no places drawn)
draw_places_axes: draw_places_axes parameters (if None, no places axes drawn)