react-visual-annotator
Version:
Powerful React image and video annotation tool for machine learning, computer vision, and AI training data creation. Features rotatable bounding boxes, polygons, keypoints, segmentation with TypeScript support and Material-UI components.
135 lines (134 loc) • 3.11 kB
TypeScript
export type BaseRegion = {
id: string | number;
cls?: string;
locked?: boolean;
visible?: boolean;
color: string;
editingLabels?: boolean;
highlighted?: boolean;
tags?: Array<string>;
comment?: string;
};
export type Point = BaseRegion & {
type: "point";
x: number;
y: number;
};
export type PixelRegion = (BaseRegion & {
type: "pixel";
sx: number;
sy: number;
w: number;
h: number;
src: string;
}) | (BaseRegion & {
type: "pixel";
points: Array<[number, number]>;
});
export type Box = BaseRegion & {
type: "box";
x: number;
y: number;
w: number;
h: number;
rotation?: number;
};
export type Polygon = BaseRegion & {
type: "polygon";
open?: boolean;
points: Array<[number, number]>;
};
export type Line = BaseRegion & {
type: "line";
x1: number;
y1: number;
x2: number;
y2: number;
};
export type ExpandingLine = BaseRegion & {
type: "expanding-line";
points: Array<{
x: number;
y: number;
angle: number | null;
width: number | null;
}>;
expandingWidth?: number;
candidatePoint?: {
x: number;
y: number;
};
unfinished?: boolean;
};
export type KeypointDefinition = BaseRegion & {
label: string;
color: string;
defaultPosition: [number, number];
};
export type KeypointId = string;
export type KeypointsDefinition = {
[id: string]: {
connections: Array<[KeypointId, KeypointId]>;
landmarks: {
[key: KeypointId]: KeypointDefinition;
};
};
};
export type Keypoints = BaseRegion & {
type: "keypoints";
keypointsDefinitionId: string;
points: {
[key: string]: {
x: number;
y: number;
};
};
open?: boolean;
};
export type Region = Point | PixelRegion | Box | Polygon | ExpandingLine | Keypoints;
export declare const getEnclosingBox: (region: Region | Line) => {
x: number;
y: number;
w: number;
h: number;
};
export declare const moveRegion: (region: Region, x: number, y: number) => (BaseRegion & {
type: "pixel";
sx: number;
sy: number;
w: number;
h: number;
src: string;
}) | (BaseRegion & {
type: "pixel";
points: Array<[number, number]>;
}) | Polygon | ExpandingLine | Keypoints | {
x: number;
y: number;
id: string | number;
cls?: string | undefined;
locked?: boolean | undefined;
visible?: boolean | undefined;
color: string;
editingLabels?: boolean | undefined;
highlighted?: boolean | undefined;
tags?: string[] | undefined;
comment?: string | undefined;
type: "point";
} | {
x: number;
y: number;
id: string | number;
cls?: string | undefined;
locked?: boolean | undefined;
visible?: boolean | undefined;
color: string;
editingLabels?: boolean | undefined;
highlighted?: boolean | undefined;
tags?: string[] | undefined;
comment?: string | undefined;
type: "box";
w: number;
h: number;
rotation?: number | undefined;
};