/
CameraObject.ts
113 lines (98 loc) · 2.34 KB
/
CameraObject.ts
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
import { SerializableObject, SerializableMember, DataObject, SerializableArrayMember, Matrix3 } from '@openhps/core';
/**
* Camera source object
*/
@SerializableObject()
export class CameraObject extends DataObject {
/**
* Width
*/
@SerializableMember()
width: number;
/**
* Height
*/
@SerializableMember()
height: number;
/**
* Distortion coefficients
* @returns {number[]} [k1, k2, p1, p2, (k3, (k4, k5))]
*/
@SerializableArrayMember(Number)
distortionCoefficients: number[];
@SerializableMember()
cameraMatrix: Matrix3;
/**
* Frames per second
*/
@SerializableMember()
fps: number;
/**
* Camera color order
*/
@SerializableMember()
colorOrder: ColorOrder = ColorOrder.RGB;
/**
* Get the focal length in pixels
* @returns {[number, number]} Focal length for x and y axis
*/
get focalLength(): [number, number] {
if (!this.cameraMatrix) {
return undefined;
}
return [this.cameraMatrix.elements[0], this.cameraMatrix.elements[4]];
}
/**
* Get the principal point in pixels
* @returns {[number, number]} Principal point for x and y axis
*/
get principalPoint(): [number, number] {
if (!this.cameraMatrix) {
return undefined;
}
return [this.cameraMatrix.elements[6], this.cameraMatrix.elements[7]];
}
/**
* Camera frustum aspect ratio.
* @returns {number} Aspect ratio
*/
get aspect(): number {
return this.width / this.height;
}
/**
* Height of image
* @returns {number} Height
*/
get rows(): number {
return this.height;
}
set rows(value: number) {
this.height = value;
}
/**
* Width of image
* @returns {number} Width
*/
get cols(): number {
return this.width;
}
set cols(value: number) {
this.width = value;
}
constructor(uid?: string, displayName?: string, width?: number, height?: number) {
super(uid, displayName);
this.width = width || 0;
this.height = height || 0;
this.distortionCoefficients = this.distortionCoefficients ?? [0, 0, 0, 0, 0];
}
}
/**
* Color order
*/
export enum ColorOrder {
RGB,
BGR,
GRAYSCALE,
RGBA,
BGRA,
}