Watcher

Watcher objects are plain object descriptors providing Lampix with the required information to start watching areas based on the behaviors described.

Properties

  • name (string): Literal string describing the Python class to instantiate and define the watcher's behavior (e.g 'NeuralNetworkClassifier', 'MovementBasedSegmenter' etc.).

  • shape (Object): Plain object with two properties, type and shape that defines the surface area for the watcher.

    • type (string): Defines shape type, and controls what the expected structure of shape.data will be. Accepted values:

      • 'rectangle'

      • 'polygon'

    • data (Object): Actual descriptor object for the contour of the watcher.

      • If shape.type is 'rectangle', the expected data structure is:

        • posX (number): top left X coordinate of rectangle

        • posY (number): top left Y coordinate of rectangle

        • width (number)

        • height (number)

      • If shape.type is 'polygon', a list of points is expected, with each point having the following data structure:

        • x (number): X coordinate of point

        • y (number): Y coordinate of point

  • onClassification (Function): Callback used by Lampix to send information about recognized objects as a list with with recognized objects of the following structure:

    • classTag (string): Recognized class of the described object.

    • objectId? (number, Optional): ID representing the object. Useful when determining whether Lampix considers an object as new.

    • outline? (Array, Optional): Object with a property of points that describes the contour of the object as a polygon:

    • metadata? (string, Optional): Watcher specific information

  • onLocation (Function): Callback used only by watchers that locate first, then classify. Called with a list of located objects that with a similar structure to the one above, except classTag is not mentioned since it has not been determined at the time of this call.

  • params? (Object): Plain object with arbitrary props that can differ from watcher to watcher. See standard watchers​

Notes

The only required property is classTag. Certain watchers that do not support more than one object at a time (e.g NeuralNetworkClassifier), will always provide a list with one recognized object that only has the classTag property. This is by design, to ensure consistency in the data format returned by the standard watchers.

Example

{
name: 'DepthClassifier',
shape: {
type: "rectangle",
data: {
posX: 0,
posY: 0,
width: window.innerWidth,
height: window.innerHeight
}
},
params: {
frames_until_stable: 5
},
onClassification: (objects) => draw(objects);
}

Tips

In the example above, you can use shape: lampix.helpers.rectangle(0, 0, window.innerWidth, window.innerHeight) to achieve the same result.