@eyepop.ai/eyepop-render-2d 0.19.1 → 0.20.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 +69 -13
- package/dist/eyepop.render2d.index.d.mts +17 -17
- package/dist/eyepop.render2d.index.d.ts +17 -17
- package/dist/eyepop.render2d.index.js +231 -86
- package/dist/eyepop.render2d.index.js.map +1 -1
- package/dist/eyepop.render2d.index.mjs +231 -86
- package/dist/eyepop.render2d.index.mjs.map +1 -1
- package/dist/eyepop.render2d.min.js +1 -1
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -104,47 +104,47 @@ See [JSONPath expression](https://www.npmjs.com/package/jsonpath)
|
|
|
104
104
|
Most prebuild render classes provide a reasonable default `target`.
|
|
105
105
|
#### Rendering Bounding Boxes and Class Labels
|
|
106
106
|
```typescript
|
|
107
|
-
Render2d.renderBox(target
|
|
107
|
+
Render2d.renderBox({target: '$.objects.*'})
|
|
108
108
|
// or
|
|
109
109
|
Render2d.renderBox()
|
|
110
110
|
```
|
|
111
111
|
#### Render Human Body Poses (2d or 3d)
|
|
112
112
|
```typescript
|
|
113
|
-
Render2d.renderPose(target
|
|
113
|
+
Render2d.renderPose({target: '$..objects[?(@.category=="person")]'})
|
|
114
114
|
// or
|
|
115
115
|
Render2d.renderPose()
|
|
116
116
|
```
|
|
117
117
|
#### Render Human Hand Details
|
|
118
118
|
```typescript
|
|
119
|
-
Render2d.renderHand(target
|
|
119
|
+
Render2d.renderHand({target: '$..objects[?(@.classLabel=="hand circumference")]'})
|
|
120
120
|
// or
|
|
121
121
|
Render2d.renderHand()
|
|
122
122
|
```
|
|
123
123
|
#### Render Human Faces
|
|
124
124
|
```typescript
|
|
125
|
-
Render2d.renderFace(target
|
|
125
|
+
Render2d.renderFace({target: '$..objects[?(@.classLabel=="face")]'})
|
|
126
126
|
// or
|
|
127
127
|
Render2d.renderFace()
|
|
128
128
|
```
|
|
129
129
|
#### Render Segmentation Masks
|
|
130
130
|
```typescript
|
|
131
|
-
Render2d.renderMask(target
|
|
131
|
+
Render2d.renderMask({target: '$..objects[?(@.mask)]'})
|
|
132
132
|
// or
|
|
133
133
|
Render2d.renderMask()
|
|
134
134
|
```
|
|
135
135
|
#### Render Segmentation Contours
|
|
136
136
|
```typescript
|
|
137
|
-
Render2d.renderContour(target
|
|
137
|
+
Render2d.renderContour({target: '$..objects[?(@.contours)]'})
|
|
138
138
|
// or
|
|
139
139
|
Render2d.renderContour()
|
|
140
140
|
```
|
|
141
141
|
#### Blur an Object (TODO does black-put instead of blur)
|
|
142
142
|
```typescript
|
|
143
|
-
Render2d.renderBlur(target
|
|
143
|
+
Render2d.renderBlur({target: '$..objects[?(@.classLabel=="face")]'})
|
|
144
144
|
```
|
|
145
145
|
#### Render a Trail of a traced object over time
|
|
146
146
|
```typescript
|
|
147
|
-
Render2d.renderTrail(
|
|
147
|
+
Render2d.renderTrail({target: '$..objects[?(@.traceId)]', trailLengthSeconds:1})
|
|
148
148
|
// or
|
|
149
149
|
Render2d.renderTrail()
|
|
150
150
|
```
|
|
@@ -152,18 +152,74 @@ By default, this traces the mid-point of the object's bounding box. Instead, one
|
|
|
152
152
|
sub-objects or key points of the traced object. Use the optional parameter `traceDetails` for this purpose.
|
|
153
153
|
E.g. trail the nose of every traced person:
|
|
154
154
|
```typescript
|
|
155
|
-
Render2d.renderTrail(
|
|
155
|
+
Render2d.renderTrail({
|
|
156
|
+
target: '$..objects[?(@.traceId)]',
|
|
157
|
+
trailLengthSeconds:1,
|
|
158
|
+
traceDetails:'$..keyPoints[?(@.category=="3d-body-points")].points[?(@.classLabel.includes("nose"))]'
|
|
159
|
+
})
|
|
156
160
|
```
|
|
157
161
|
#### Custom render implementation
|
|
158
|
-
To implement custom rendering rules,
|
|
162
|
+
To implement custom rendering rules, create a custom class as follows:
|
|
159
163
|
```typescript
|
|
164
|
+
import { PredictedObject, StreamTime } from '@eyepop.ai/eyepop'
|
|
165
|
+
|
|
160
166
|
export interface Render {
|
|
167
|
+
target: string
|
|
161
168
|
start(context: CanvasRenderingContext2D, style: Style): void
|
|
162
169
|
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime): void
|
|
163
170
|
}
|
|
164
171
|
|
|
165
|
-
export
|
|
166
|
-
|
|
167
|
-
|
|
172
|
+
export class RenderCustomImage implements Render
|
|
173
|
+
{
|
|
174
|
+
public target: string = "$..objects[?(@.category=='person')]"
|
|
175
|
+
|
|
176
|
+
private context: CanvasRenderingContext2D | undefined
|
|
177
|
+
private style: any
|
|
178
|
+
|
|
179
|
+
// Optionally, add a constructor here. ie: constructor(...) { }
|
|
180
|
+
|
|
181
|
+
// The start method sets the context and style properties.
|
|
182
|
+
start(context: CanvasRenderingContext2D, style: any)
|
|
183
|
+
{
|
|
184
|
+
this.context = context
|
|
185
|
+
this.style = style
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// The draw method draws the image and line on the canvas based on the positions of the points in the PredictedObject.
|
|
189
|
+
public draw(
|
|
190
|
+
element: PredictedObject, // The object containing the keypoints
|
|
191
|
+
xOffset: number, // The x offset for the drawing
|
|
192
|
+
yOffset: number, // The y offset for the drawing
|
|
193
|
+
xScale: number, // The x scale factor for the drawing
|
|
194
|
+
yScale: number, // The y scale factor for the drawing
|
|
195
|
+
streamTime: StreamTime // The timestamp for the stream of predicted objects
|
|
196
|
+
): void
|
|
197
|
+
{
|
|
198
|
+
// Check if the context and style properties have been set
|
|
199
|
+
if (!this.context || !this.style)
|
|
200
|
+
{
|
|
201
|
+
throw new Error('render() called before start()')
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Check if the keypoints are defined
|
|
205
|
+
if (!element.keyPoints) return
|
|
206
|
+
if (!element.keyPoints.length) return
|
|
207
|
+
|
|
208
|
+
// Find the points of interest in the keypoints
|
|
209
|
+
for (let i = 0; i < element.keyPoints.length; i++)
|
|
210
|
+
{
|
|
211
|
+
const kp = element.keyPoints[ i ]
|
|
212
|
+
for (let j = 0; j < kp.points.length; j++)
|
|
213
|
+
{
|
|
214
|
+
const point = kp.points[ j ]
|
|
215
|
+
if (point.classLabel === 'left eye' || point.classLabel === 'right eye')
|
|
216
|
+
{
|
|
217
|
+
// Draw with the canvas context here
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
168
222
|
}
|
|
223
|
+
|
|
224
|
+
|
|
169
225
|
```
|
|
@@ -14,35 +14,35 @@ interface Colors {
|
|
|
14
14
|
declare class Style {
|
|
15
15
|
font: string;
|
|
16
16
|
colors: Colors;
|
|
17
|
+
scale: number;
|
|
17
18
|
private static defaultColors;
|
|
18
19
|
constructor(context: CanvasRenderingContext2D);
|
|
19
20
|
private calculateFont;
|
|
21
|
+
private calculateScale;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
interface
|
|
24
|
+
interface RenderTarget {
|
|
25
|
+
target: string;
|
|
26
|
+
}
|
|
27
|
+
interface Render extends RenderTarget {
|
|
23
28
|
start(context: CanvasRenderingContext2D, style: Style): void;
|
|
24
29
|
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime): void;
|
|
25
30
|
}
|
|
26
31
|
|
|
27
|
-
interface
|
|
28
|
-
readonly render: Render;
|
|
29
|
-
readonly target: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
interface Renderer {
|
|
32
|
+
interface Renderer extends RenderTarget {
|
|
33
33
|
draw(p: Prediction): void;
|
|
34
34
|
}
|
|
35
35
|
declare namespace Render2d {
|
|
36
|
-
function renderer(context: CanvasRenderingContext2D, rules?:
|
|
37
|
-
function renderBlur(target: string):
|
|
38
|
-
function renderBox(
|
|
39
|
-
function renderMask(target?: string):
|
|
40
|
-
function renderContour(target?: string):
|
|
41
|
-
function renderFace(target?: string):
|
|
42
|
-
function renderKeypoints(target?: string):
|
|
43
|
-
function renderHand(target?: string):
|
|
44
|
-
function renderPose(target?: string):
|
|
45
|
-
function renderTrail(
|
|
36
|
+
function renderer(context: CanvasRenderingContext2D, rules?: Render[] | undefined): Renderer;
|
|
37
|
+
function renderBlur(target: string): Render;
|
|
38
|
+
function renderBox(showClass?: boolean, showText?: boolean, showConfidence?: boolean, showTraceId?: boolean, showNestedClasses?: boolean, target?: string): Render;
|
|
39
|
+
function renderMask(target?: string): Render;
|
|
40
|
+
function renderContour(target?: string): Render;
|
|
41
|
+
function renderFace(target?: string): Render;
|
|
42
|
+
function renderKeypoints(target?: string): Render;
|
|
43
|
+
function renderHand(target?: string): Render;
|
|
44
|
+
function renderPose(target?: string): Render;
|
|
45
|
+
function renderTrail(trailLengthSeconds?: number, traceDetails?: string | undefined, target?: string): Render;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export { Render2d, type Renderer, Render2d as default };
|
|
@@ -14,35 +14,35 @@ interface Colors {
|
|
|
14
14
|
declare class Style {
|
|
15
15
|
font: string;
|
|
16
16
|
colors: Colors;
|
|
17
|
+
scale: number;
|
|
17
18
|
private static defaultColors;
|
|
18
19
|
constructor(context: CanvasRenderingContext2D);
|
|
19
20
|
private calculateFont;
|
|
21
|
+
private calculateScale;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
interface
|
|
24
|
+
interface RenderTarget {
|
|
25
|
+
target: string;
|
|
26
|
+
}
|
|
27
|
+
interface Render extends RenderTarget {
|
|
23
28
|
start(context: CanvasRenderingContext2D, style: Style): void;
|
|
24
29
|
draw(element: any, xOffset: number, yOffset: number, xScale: number, yScale: number, streamTime: StreamTime): void;
|
|
25
30
|
}
|
|
26
31
|
|
|
27
|
-
interface
|
|
28
|
-
readonly render: Render;
|
|
29
|
-
readonly target: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
interface Renderer {
|
|
32
|
+
interface Renderer extends RenderTarget {
|
|
33
33
|
draw(p: Prediction): void;
|
|
34
34
|
}
|
|
35
35
|
declare namespace Render2d {
|
|
36
|
-
function renderer(context: CanvasRenderingContext2D, rules?:
|
|
37
|
-
function renderBlur(target: string):
|
|
38
|
-
function renderBox(
|
|
39
|
-
function renderMask(target?: string):
|
|
40
|
-
function renderContour(target?: string):
|
|
41
|
-
function renderFace(target?: string):
|
|
42
|
-
function renderKeypoints(target?: string):
|
|
43
|
-
function renderHand(target?: string):
|
|
44
|
-
function renderPose(target?: string):
|
|
45
|
-
function renderTrail(
|
|
36
|
+
function renderer(context: CanvasRenderingContext2D, rules?: Render[] | undefined): Renderer;
|
|
37
|
+
function renderBlur(target: string): Render;
|
|
38
|
+
function renderBox(showClass?: boolean, showText?: boolean, showConfidence?: boolean, showTraceId?: boolean, showNestedClasses?: boolean, target?: string): Render;
|
|
39
|
+
function renderMask(target?: string): Render;
|
|
40
|
+
function renderContour(target?: string): Render;
|
|
41
|
+
function renderFace(target?: string): Render;
|
|
42
|
+
function renderKeypoints(target?: string): Render;
|
|
43
|
+
function renderHand(target?: string): Render;
|
|
44
|
+
function renderPose(target?: string): Render;
|
|
45
|
+
function renderTrail(trailLengthSeconds?: number, traceDetails?: string | undefined, target?: string): Render;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export { Render2d, type Renderer, Render2d as default };
|