aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/aruco_markers_pipeline/advanced_topics/scripting.md
blob: 04d6a2f3c2df3d0449c9651577b296e1e4f79d66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Script the pipeline
===================

All aruco markers pipeline objects are accessible from Python script.
This could be particularly useful for realtime AR interaction applications.

## Load ArUcoCamera configuration from dictionary

First of all, [ArUcoCamera](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) configuration can be loaded from a python dictionary.

```python
from argaze.ArUcoMarkers import ArUcoCamera

# Edit a dict with ArUcoCamera configuration
configuration = {
	"name": "My FullHD camera",
    "size": (1920, 1080),
    ...
    "aruco_detector": {
        ...
    },
    "scenes": {
        "MyScene" : {
             "aruco_markers_group": {
                ...
            },
            "layers": {
                "MyLayer": {
                    "aoi_scene": {
                    ...
                    }
                },
                ...
            }
        },
        ...
    }
    "layers": {
        "MyLayer": {
            ...
        },
        ...
    },
    "image_parameters": {
        ...
    }
}

# Load ArUcoCamera
aruco_camera = ArUcoCamera.ArUcoCamera.from_dict(configuration)

# Do something with ArUcoCamera
...
```

## Access to ArUcoCamera and ArScenes attributes

Then, once the configuration is loaded, it is possible to access to its attributes: [read ArUcoCamera code reference](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) to get a complete list of what is available.

Thus, the [ArUcoCamera.scenes](../../../argaze.md/#argaze.ArFeatures.ArCamera) attribute allows to access each loaded aruco scene and so, access to their attributes: [read ArUcoScene code reference](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoScene) to get a complete list of what is available.

```python
from argaze import ArFeatures

# Assuming the ArUcoCamera is loaded
...

# Iterate over each ArUcoCamera scene
for name, aruco_scene in aruco_camera.scenes.items():
    ...
```

## Pipeline execution outputs

[ArUcoCamera.watch](../../../argaze.md/#argaze.ArFeatures.ArCamera.watch) method returns data about pipeline execution.

```python
# Assuming that timestamped images are available
...:

    try:

        # Watch image with ArUco camera
        aruco_camera.watch(image, timestamp=timestamp)

    # Do something with pipeline exception
    except Exception as e:

        ...

    # Do something with detected_markers
    ... aruco_camera.aruco_detector.detected_markers()
    
```

Let's understand the meaning of each returned data.

### *aruco_camera.aruco_detector.detected_markers()*

A dictionary containing all detected markers provided by [ArUcoDetector](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoDetector) class.

## Setup ArUcoCamera image parameters

Specific [ArUcoCamera.image](../../../argaze.md/#argaze.ArFeatures.ArFrame.image) method parameters can be configured thanks to a python dictionary.

```python
# Assuming ArUcoCamera is loaded
...

# Edit a dict with ArUcoCamera image parameters
image_parameters = {
    "draw_detected_markers": {
        ...
    },
    "draw_scenes": {
        ...   
    },
    "draw_optic_parameters_grid": {
        ...
    },
    ...
}

# Pass image parameters to ArUcoCamera
aruco_camera_image = aruco_camera.image(**image_parameters)

# Do something with ArUcoCamera image
...
```

!!! note
    [ArUcoCamera](../../../argaze.md/#argaze.ArUcoMarkers.ArUcoCamera) inherits from [ArFrame](../../../argaze.md/#argaze.ArFeatures.ArFrame) and so, benefits from all image parameters described in [gaze analysis pipeline visualisation section](../../gaze_analysis_pipeline/visualisation.md).