@eyepop.ai/eyepop-render-2d 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -37
- package/dist/eyepop.render2d.index.d.mts +54 -11
- package/dist/eyepop.render2d.index.d.ts +54 -11
- package/dist/eyepop.render2d.index.js +263 -75
- package/dist/eyepop.render2d.index.js.map +1 -1
- package/dist/eyepop.render2d.index.mjs +263 -75
- package/dist/eyepop.render2d.index.mjs.map +1 -1
- package/dist/eyepop.render2d.min.js +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ const example_image_path = 'examples/example.jpg';
|
|
|
57
57
|
})();
|
|
58
58
|
```
|
|
59
59
|
### Browser
|
|
60
|
+
|
|
60
61
|
```html
|
|
61
62
|
<!DOCTYPE html>
|
|
62
63
|
<html lang="en">
|
|
@@ -66,25 +67,29 @@ const example_image_path = 'examples/example.jpg';
|
|
|
66
67
|
</head>
|
|
67
68
|
<body>
|
|
68
69
|
<!-- ... -->
|
|
69
|
-
|
|
70
|
+
<input type="file" id="my-file-chooser">
|
|
70
71
|
<!-- ... -->
|
|
71
|
-
|
|
72
|
+
<canvas id="my-canvas"></canvas>
|
|
72
73
|
<!-- ... -->
|
|
73
|
-
|
|
74
|
-
async
|
|
74
|
+
<script>
|
|
75
|
+
async
|
|
76
|
+
uploadFile(event)
|
|
77
|
+
{
|
|
75
78
|
const fileChooser = document.getElementById('my-file-chooser');
|
|
76
79
|
const context = document.getElementById('my-canvas').getContext("2d");
|
|
77
80
|
const renderer = Render2d.renderer(context);
|
|
78
|
-
|
|
79
|
-
const endpoint = await EyePop.
|
|
81
|
+
|
|
82
|
+
const endpoint = await EyePop.workerEndpoint({auth: {oAuth2: true}, popId: '< Pop Id>'}).connect();
|
|
80
83
|
endpoint.process({file: fileChooser.files[0]}).then(async (results) => {
|
|
81
84
|
for await (let result of results) {
|
|
82
85
|
renderer.draw(result);
|
|
83
86
|
}
|
|
84
87
|
});
|
|
85
88
|
await endpoint.disconnect();
|
|
86
|
-
}
|
|
87
|
-
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
;
|
|
92
|
+
</script>
|
|
88
93
|
</body>
|
|
89
94
|
</html>
|
|
90
95
|
|
|
@@ -97,64 +102,77 @@ Change this rendering behaviour by passing in rendering rule(s), e.g.:
|
|
|
97
102
|
Render2d.renderer(context,[Render2.renderFace()]).draw(result);
|
|
98
103
|
// ...
|
|
99
104
|
```
|
|
100
|
-
Each rule has a `render` object and a `target` attribute. All prebuild render classes accept a
|
|
101
|
-
JSONPath expression as `target` parameter to select which elements should be rendered from predictions.
|
|
105
|
+
Each rule has a `render` object and a `target` attribute. All prebuild render classes accept a JSONPath expression as `target` parameter to select which elements should be rendered from predictions.
|
|
102
106
|
See [JSONPath expression](https://www.npmjs.com/package/jsonpath)
|
|
103
107
|
|
|
104
|
-
Most prebuild render classes provide a reasonable
|
|
108
|
+
Most prebuild render classes provide a reasonable defaults, as shown below.
|
|
105
109
|
#### Rendering Bounding Boxes and Class Labels
|
|
110
|
+
|
|
106
111
|
```typescript
|
|
107
|
-
Render2d.renderBox({
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
Render2d.renderBox({
|
|
113
|
+
showClass = true,
|
|
114
|
+
showConfidence = false,
|
|
115
|
+
showTraceId = false,
|
|
116
|
+
showNestedClasses = false,
|
|
117
|
+
target = '$..objects.*'
|
|
118
|
+
})
|
|
110
119
|
```
|
|
111
120
|
#### Render Human Body Poses (2d or 3d)
|
|
112
121
|
```typescript
|
|
113
|
-
Render2d.renderPose({
|
|
114
|
-
|
|
115
|
-
|
|
122
|
+
Render2d.renderPose({
|
|
123
|
+
target: '$..objects[?(@.category=="person")]'
|
|
124
|
+
})
|
|
116
125
|
```
|
|
117
126
|
#### Render Human Hand Details
|
|
118
127
|
```typescript
|
|
119
|
-
Render2d.renderHand({
|
|
120
|
-
|
|
121
|
-
|
|
128
|
+
Render2d.renderHand({
|
|
129
|
+
target: '$..objects[?(@.classLabel=="hand circumference")]'
|
|
130
|
+
})
|
|
122
131
|
```
|
|
123
132
|
#### Render Human Faces
|
|
124
133
|
```typescript
|
|
125
|
-
Render2d.renderFace({
|
|
126
|
-
|
|
127
|
-
|
|
134
|
+
Render2d.renderFace({
|
|
135
|
+
showLabels = false,
|
|
136
|
+
target = '$..objects[?(@.classLabel=="face")]'
|
|
137
|
+
})
|
|
138
|
+
```
|
|
139
|
+
#### Render Text (OCR Overlay)
|
|
140
|
+
```typescript
|
|
141
|
+
Render2d.renderText({
|
|
142
|
+
target: '$..objects[?(@.classLabel=="text")]'
|
|
143
|
+
})
|
|
128
144
|
```
|
|
129
145
|
#### Render Segmentation Masks
|
|
130
146
|
```typescript
|
|
131
|
-
Render2d.renderMask({
|
|
132
|
-
|
|
133
|
-
|
|
147
|
+
Render2d.renderMask({
|
|
148
|
+
target: '$..objects[?(@.mask)]'
|
|
149
|
+
})
|
|
134
150
|
```
|
|
135
151
|
#### Render Segmentation Contours
|
|
136
152
|
```typescript
|
|
137
|
-
Render2d.renderContour({
|
|
138
|
-
|
|
139
|
-
|
|
153
|
+
Render2d.renderContour({
|
|
154
|
+
target: '$..objects[?(@.contours)]'
|
|
155
|
+
})
|
|
140
156
|
```
|
|
141
157
|
#### Blur an Object (TODO does black-put instead of blur)
|
|
142
158
|
```typescript
|
|
143
|
-
Render2d.renderBlur({
|
|
159
|
+
Render2d.renderBlur({
|
|
160
|
+
target: '$..objects[?(@.classLabel=="face")]'
|
|
161
|
+
})
|
|
144
162
|
```
|
|
145
163
|
#### Render a Trail of a traced object over time
|
|
146
164
|
```typescript
|
|
147
|
-
Render2d.renderTrail({
|
|
148
|
-
|
|
149
|
-
|
|
165
|
+
Render2d.renderTrail({
|
|
166
|
+
target: '$..objects[?(@.traceId)]',
|
|
167
|
+
trailLengthSeconds:1,
|
|
168
|
+
})
|
|
150
169
|
```
|
|
151
|
-
By default, this traces the mid-point of the object's bounding box. Instead, one can also draw trails of
|
|
152
|
-
sub-objects or key points of the traced object. Use the optional parameter `traceDetails` for this purpose.
|
|
170
|
+
By default, this traces the mid-point of the object's bounding box. Instead, one can also draw trails of sub-objects or key points of the traced object. Use the optional parameter `traceDetails` for this purpose.
|
|
153
171
|
E.g. trail the nose of every traced person:
|
|
154
172
|
```typescript
|
|
155
173
|
Render2d.renderTrail({
|
|
156
|
-
target: '$..objects[?(@.traceId)]',
|
|
157
|
-
trailLengthSeconds:1,
|
|
174
|
+
target: '$..objects[?(@.traceId)]',
|
|
175
|
+
trailLengthSeconds:1,
|
|
158
176
|
traceDetails:'$..keyPoints[?(@.category=="3d-body-points")].points[?(@.classLabel.includes("nose"))]'
|
|
159
177
|
})
|
|
160
178
|
```
|
|
@@ -15,6 +15,8 @@ declare class Style {
|
|
|
15
15
|
font: string;
|
|
16
16
|
colors: Colors;
|
|
17
17
|
scale: number;
|
|
18
|
+
cornerWidth: number;
|
|
19
|
+
cornerPadding: number;
|
|
18
20
|
private static defaultColors;
|
|
19
21
|
constructor(context: CanvasRenderingContext2D);
|
|
20
22
|
private calculateFont;
|
|
@@ -26,23 +28,64 @@ interface RenderTarget {
|
|
|
26
28
|
}
|
|
27
29
|
interface Render extends RenderTarget {
|
|
28
30
|
start(context: CanvasRenderingContext2D, style: Style): void;
|
|
29
|
-
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime): void;
|
|
31
|
+
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime, color?: string): void;
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
type RenderBlurOptions = {} & RenderTarget;
|
|
35
|
+
|
|
36
|
+
declare enum BoxType {
|
|
37
|
+
Rich = "rich",
|
|
38
|
+
Simple = "simple"
|
|
39
|
+
}
|
|
40
|
+
type RenderBoxOptions = {
|
|
41
|
+
showClass?: boolean;
|
|
42
|
+
showNestedClasses?: boolean;
|
|
43
|
+
showConfidence?: boolean;
|
|
44
|
+
showTraceId?: boolean;
|
|
45
|
+
boxType?: BoxType;
|
|
46
|
+
} & RenderTarget;
|
|
47
|
+
|
|
48
|
+
type RenderFaceOptions = {
|
|
49
|
+
showLabels: boolean;
|
|
50
|
+
} & RenderTarget;
|
|
51
|
+
|
|
52
|
+
type RenderHandOptions = {} & RenderTarget;
|
|
53
|
+
|
|
54
|
+
type RenderPoseOptions = {} & RenderTarget;
|
|
55
|
+
|
|
56
|
+
type RenderTrailOptions = {
|
|
57
|
+
trailLengthSeconds: number;
|
|
58
|
+
traceDetails?: string | undefined;
|
|
59
|
+
} & RenderTarget;
|
|
60
|
+
|
|
61
|
+
type RenderMaskOptions = {} & RenderTarget;
|
|
62
|
+
|
|
63
|
+
type RenderContourOptions = {} & RenderTarget;
|
|
64
|
+
|
|
65
|
+
type RenderKeyPointsOptions = {
|
|
66
|
+
showLabels: boolean;
|
|
67
|
+
} & RenderTarget;
|
|
68
|
+
|
|
69
|
+
type RenderTextOptions = {
|
|
70
|
+
showText: boolean;
|
|
71
|
+
fitToBounds: boolean;
|
|
72
|
+
} & RenderTarget;
|
|
73
|
+
|
|
32
74
|
interface Renderer extends RenderTarget {
|
|
33
|
-
draw(p: Prediction): void;
|
|
75
|
+
draw(p: Prediction, color?: string): void;
|
|
34
76
|
}
|
|
35
77
|
declare namespace Render2d {
|
|
36
78
|
function renderer(context: CanvasRenderingContext2D, rules?: Render[] | undefined): Renderer;
|
|
37
|
-
function renderBlur(
|
|
38
|
-
function renderBox(
|
|
39
|
-
function renderMask(
|
|
40
|
-
function renderContour(
|
|
41
|
-
function renderFace(
|
|
42
|
-
function renderKeypoints(
|
|
43
|
-
function renderHand(
|
|
44
|
-
function renderPose(
|
|
45
|
-
function
|
|
79
|
+
function renderBlur(options?: Partial<RenderBlurOptions>): Render;
|
|
80
|
+
function renderBox(options?: Partial<RenderBoxOptions>): Render;
|
|
81
|
+
function renderMask(options?: Partial<RenderMaskOptions>): Render;
|
|
82
|
+
function renderContour(options?: Partial<RenderContourOptions>): Render;
|
|
83
|
+
function renderFace(options?: Partial<RenderFaceOptions>): Render;
|
|
84
|
+
function renderKeypoints(options?: Partial<RenderKeyPointsOptions>): Render;
|
|
85
|
+
function renderHand(options?: Partial<RenderHandOptions>): Render;
|
|
86
|
+
function renderPose(options?: Partial<RenderPoseOptions>): Render;
|
|
87
|
+
function renderText(options?: Partial<RenderTextOptions>): Render;
|
|
88
|
+
function renderTrail(options?: Partial<RenderTrailOptions>): Render;
|
|
46
89
|
}
|
|
47
90
|
|
|
48
91
|
export { Render2d, type Renderer, Render2d as default };
|
|
@@ -15,6 +15,8 @@ declare class Style {
|
|
|
15
15
|
font: string;
|
|
16
16
|
colors: Colors;
|
|
17
17
|
scale: number;
|
|
18
|
+
cornerWidth: number;
|
|
19
|
+
cornerPadding: number;
|
|
18
20
|
private static defaultColors;
|
|
19
21
|
constructor(context: CanvasRenderingContext2D);
|
|
20
22
|
private calculateFont;
|
|
@@ -26,23 +28,64 @@ interface RenderTarget {
|
|
|
26
28
|
}
|
|
27
29
|
interface Render extends RenderTarget {
|
|
28
30
|
start(context: CanvasRenderingContext2D, style: Style): void;
|
|
29
|
-
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime): void;
|
|
31
|
+
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime, color?: string): void;
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
type RenderBlurOptions = {} & RenderTarget;
|
|
35
|
+
|
|
36
|
+
declare enum BoxType {
|
|
37
|
+
Rich = "rich",
|
|
38
|
+
Simple = "simple"
|
|
39
|
+
}
|
|
40
|
+
type RenderBoxOptions = {
|
|
41
|
+
showClass?: boolean;
|
|
42
|
+
showNestedClasses?: boolean;
|
|
43
|
+
showConfidence?: boolean;
|
|
44
|
+
showTraceId?: boolean;
|
|
45
|
+
boxType?: BoxType;
|
|
46
|
+
} & RenderTarget;
|
|
47
|
+
|
|
48
|
+
type RenderFaceOptions = {
|
|
49
|
+
showLabels: boolean;
|
|
50
|
+
} & RenderTarget;
|
|
51
|
+
|
|
52
|
+
type RenderHandOptions = {} & RenderTarget;
|
|
53
|
+
|
|
54
|
+
type RenderPoseOptions = {} & RenderTarget;
|
|
55
|
+
|
|
56
|
+
type RenderTrailOptions = {
|
|
57
|
+
trailLengthSeconds: number;
|
|
58
|
+
traceDetails?: string | undefined;
|
|
59
|
+
} & RenderTarget;
|
|
60
|
+
|
|
61
|
+
type RenderMaskOptions = {} & RenderTarget;
|
|
62
|
+
|
|
63
|
+
type RenderContourOptions = {} & RenderTarget;
|
|
64
|
+
|
|
65
|
+
type RenderKeyPointsOptions = {
|
|
66
|
+
showLabels: boolean;
|
|
67
|
+
} & RenderTarget;
|
|
68
|
+
|
|
69
|
+
type RenderTextOptions = {
|
|
70
|
+
showText: boolean;
|
|
71
|
+
fitToBounds: boolean;
|
|
72
|
+
} & RenderTarget;
|
|
73
|
+
|
|
32
74
|
interface Renderer extends RenderTarget {
|
|
33
|
-
draw(p: Prediction): void;
|
|
75
|
+
draw(p: Prediction, color?: string): void;
|
|
34
76
|
}
|
|
35
77
|
declare namespace Render2d {
|
|
36
78
|
function renderer(context: CanvasRenderingContext2D, rules?: Render[] | undefined): Renderer;
|
|
37
|
-
function renderBlur(
|
|
38
|
-
function renderBox(
|
|
39
|
-
function renderMask(
|
|
40
|
-
function renderContour(
|
|
41
|
-
function renderFace(
|
|
42
|
-
function renderKeypoints(
|
|
43
|
-
function renderHand(
|
|
44
|
-
function renderPose(
|
|
45
|
-
function
|
|
79
|
+
function renderBlur(options?: Partial<RenderBlurOptions>): Render;
|
|
80
|
+
function renderBox(options?: Partial<RenderBoxOptions>): Render;
|
|
81
|
+
function renderMask(options?: Partial<RenderMaskOptions>): Render;
|
|
82
|
+
function renderContour(options?: Partial<RenderContourOptions>): Render;
|
|
83
|
+
function renderFace(options?: Partial<RenderFaceOptions>): Render;
|
|
84
|
+
function renderKeypoints(options?: Partial<RenderKeyPointsOptions>): Render;
|
|
85
|
+
function renderHand(options?: Partial<RenderHandOptions>): Render;
|
|
86
|
+
function renderPose(options?: Partial<RenderPoseOptions>): Render;
|
|
87
|
+
function renderText(options?: Partial<RenderTextOptions>): Render;
|
|
88
|
+
function renderTrail(options?: Partial<RenderTrailOptions>): Render;
|
|
46
89
|
}
|
|
47
90
|
|
|
48
91
|
export { Render2d, type Renderer, Render2d as default };
|