Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit 72d9e39

Browse files
Merge pull request #848 from psrcek/master
Added additional properties to MLKitDetectFacesResultFace and MLKitScanBarcodesResultBarcode
2 parents 5becc0e + a76b578 commit 72d9e39

File tree

6 files changed

+78
-10
lines changed

6 files changed

+78
-10
lines changed

src/mlkit/barcodescanning/index.android.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ImageSource } from "tns-core-modules/image-source";
2-
import { MLKitScanBarcodesOnDeviceOptions, MLKitScanBarcodesOnDeviceResult } from "./";
2+
import { MLKitScanBarcodesOnDeviceOptions, MLKitScanBarcodesOnDeviceResult, MLKitScanBarcodesResultBounds } from "./";
33
import { MLKitVisionOptions } from "../index";
44
import { BarcodeFormat, MLKitBarcodeScanner as MLKitBarcodeScannerBase } from "./barcodescanning-common";
55

@@ -34,7 +34,8 @@ export class MLKitBarcodeScanner extends MLKitBarcodeScannerBase {
3434
result.barcodes.push({
3535
value: barcode.getRawValue(),
3636
format: BarcodeFormat[barcode.getFormat()],
37-
android: barcode
37+
android: barcode,
38+
bounds: boundingBoxToBounds(barcode.getBoundingBox())
3839
});
3940
}
4041
}
@@ -49,6 +50,19 @@ export class MLKitBarcodeScanner extends MLKitBarcodeScannerBase {
4950
}
5051
}
5152

53+
function boundingBoxToBounds(rect: any): MLKitScanBarcodesResultBounds {
54+
return {
55+
origin: {
56+
x: rect.left,
57+
y: rect.top
58+
},
59+
size: {
60+
width: rect.width(),
61+
height: rect.height()
62+
}
63+
}
64+
}
65+
5266
function getBarcodeDetector(formats?: Array<BarcodeFormat>): any {
5367
if (formats && formats.length > 0) {
5468
const firebaseVisionBarcodeDetectorOptions =
@@ -79,7 +93,8 @@ export function scanBarcodesOnDevice(options: MLKitScanBarcodesOnDeviceOptions):
7993
result.barcodes.push({
8094
value: barcode.getRawValue(),
8195
format: BarcodeFormat[barcode.getFormat()],
82-
android: barcode
96+
android: barcode,
97+
bounds: boundingBoxToBounds(barcode.getBoundingBox())
8398
});
8499
}
85100
}

src/mlkit/barcodescanning/index.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,23 @@ import { BarcodeFormat } from "./barcodescanning-common";
33

44
export { BarcodeFormat };
55

6+
export interface MLKitScanBarcodesResultBounds {
7+
origin: {
8+
x: number;
9+
y: number;
10+
},
11+
size: {
12+
width: number;
13+
height: number;
14+
}
15+
}
16+
617
export interface MLKitScanBarcodesResultBarcode {
718
value: string;
819
format: string;
920
ios?: any;
1021
android?: any;
22+
bounds?: MLKitScanBarcodesResultBounds;
1123
// TODO details
1224
}
1325

src/mlkit/barcodescanning/index.ios.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ export class MLKitBarcodeScanner extends MLKitBarcodeScannerBase {
3232
result.barcodes.push({
3333
value: barcode.rawValue,
3434
format: BarcodeFormat[barcode.format],
35-
ios: barcode
35+
ios: barcode,
36+
bounds: barcode.frame
3637
});
3738
}
3839

@@ -79,7 +80,8 @@ export function scanBarcodesOnDevice(options: MLKitScanBarcodesOnDeviceOptions):
7980
result.barcodes.push({
8081
value: barcode.rawValue,
8182
format: BarcodeFormat[barcode.format],
82-
ios: barcode
83+
ios: barcode,
84+
bounds: barcode.frame
8385
});
8486
}
8587
resolve(result);

src/mlkit/facedetection/index.android.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ImageSource } from "tns-core-modules/image-source";
2+
import { MLKitDetectFacesOnDeviceOptions, MLKitDetectFacesOnDeviceResult, MLKitDetectFacesResultBounds } from "./";
23
import { MLKitVisionOptions } from "../";
3-
import { MLKitDetectFacesOnDeviceOptions, MLKitDetectFacesOnDeviceResult } from "./";
44
import { MLKitFaceDetection as MLKitFaceDetectionBase } from "./facedetection-common";
55

66
const gmsTasks = (<any>com.google.android.gms).tasks;
@@ -33,10 +33,13 @@ export class MLKitFaceDetection extends MLKitFaceDetectionBase {
3333
for (let i = 0; i < faces.size(); i++) {
3434
const face = faces.get(i);
3535
result.faces.push({
36+
bounds: boundingBoxToBounds(face.getBoundingBox()),
3637
smilingProbability: face.getSmilingProbability() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.UNCOMPUTED_PROBABILITY ? face.getSmilingProbability() : undefined,
3738
leftEyeOpenProbability: face.getLeftEyeOpenProbability() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.UNCOMPUTED_PROBABILITY ? face.getLeftEyeOpenProbability() : undefined,
3839
rightEyeOpenProbability: face.getRightEyeOpenProbability() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.UNCOMPUTED_PROBABILITY ? face.getRightEyeOpenProbability() : undefined,
39-
trackingId: face.getTrackingId() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.INVALID_ID ? face.getTrackingId() : undefined
40+
trackingId: face.getTrackingId() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.INVALID_ID ? face.getTrackingId() : undefined,
41+
headEulerAngleY: face.getHeadEulerAngleY(),
42+
headEulerAngleZ: face.getHeadEulerAngleZ()
4043
});
4144
}
4245

@@ -64,6 +67,19 @@ function getFaceDetector(options: MLKitDetectFacesOnDeviceOptions): any {
6467
return com.google.firebase.ml.vision.FirebaseVision.getInstance().getVisionFaceDetector(builder.build());
6568
}
6669

70+
function boundingBoxToBounds(rect: any): MLKitDetectFacesResultBounds {
71+
return {
72+
origin: {
73+
x: rect.left,
74+
y: rect.top
75+
},
76+
size: {
77+
width: rect.width(),
78+
height: rect.height()
79+
}
80+
}
81+
}
82+
6783
export function detectFacesOnDevice(options: MLKitDetectFacesOnDeviceOptions): Promise<MLKitDetectFacesOnDeviceResult> {
6884
return new Promise((resolve, reject) => {
6985
try {
@@ -81,10 +97,13 @@ export function detectFacesOnDevice(options: MLKitDetectFacesOnDeviceOptions): P
8197
for (let i = 0; i < faces.size(); i++) {
8298
const face = faces.get(i);
8399
result.faces.push({
100+
bounds: boundingBoxToBounds(face.getBoundingBox()),
84101
smilingProbability: face.getSmilingProbability() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.UNCOMPUTED_PROBABILITY ? face.getSmilingProbability() : undefined,
85102
leftEyeOpenProbability: face.getLeftEyeOpenProbability() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.UNCOMPUTED_PROBABILITY ? face.getLeftEyeOpenProbability() : undefined,
86103
rightEyeOpenProbability: face.getRightEyeOpenProbability() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.UNCOMPUTED_PROBABILITY ? face.getRightEyeOpenProbability() : undefined,
87-
trackingId: face.getTrackingId() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.INVALID_ID ? face.getTrackingId() : undefined
104+
trackingId: face.getTrackingId() !== com.google.firebase.ml.vision.face.FirebaseVisionFace.INVALID_ID ? face.getTrackingId() : undefined,
105+
headEulerAngleY: face.getHeadEulerAngleY(),
106+
headEulerAngleZ: face.getHeadEulerAngleZ()
88107
});
89108
}
90109
}

src/mlkit/facedetection/index.d.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
import { MLKitCameraView, MLKitVisionOptions, MLKitVisionResult } from "../";
22

3+
export interface MLKitDetectFacesResultBounds {
4+
origin: {
5+
x: number;
6+
y: number;
7+
},
8+
size: {
9+
width: number;
10+
height: number;
11+
}
12+
}
13+
314
export interface MLKitDetectFacesResultFace {
415
smilingProbability?: number;
516
leftEyeOpenProbability?: number;
617
rightEyeOpenProbability?: number;
718
trackingId?: number;
819
ios?: any;
920
android?: any;
21+
bounds?: MLKitDetectFacesResultBounds;
22+
headEulerAngleZ?: number;
23+
headEulerAngleY?: number;
1024
}
1125

1226
export interface MLKitDetectFacesOnDeviceResult extends MLKitVisionResult {

src/mlkit/facedetection/index.ios.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ export class MLKitFaceDetection extends MLKitFaceDetectionBase {
3030
smilingProbability: face.hasSmilingProbability ? face.smilingProbability : undefined,
3131
leftEyeOpenProbability: face.hasLeftEyeOpenProbability ? face.leftEyeOpenProbability : undefined,
3232
rightEyeOpenProbability: face.hasRightEyeOpenProbability ? face.rightEyeOpenProbability : undefined,
33-
trackingId: face.hasTrackingID ? face.trackingID : undefined
33+
trackingId: face.hasTrackingID ? face.trackingID : undefined,
34+
bounds: face.frame,
35+
headEulerAngleY: face.headEulerAngleY,
36+
headEulerAngleZ: face.headEulerAngleZ
3437
});
3538
}
3639

@@ -86,7 +89,10 @@ export function detectFacesOnDevice(options: MLKitDetectFacesOnDeviceOptions): P
8689
smilingProbability: face.hasSmilingProbability ? face.smilingProbability : undefined,
8790
leftEyeOpenProbability: face.hasLeftEyeOpenProbability ? face.leftEyeOpenProbability : undefined,
8891
rightEyeOpenProbability: face.hasRightEyeOpenProbability ? face.rightEyeOpenProbability : undefined,
89-
trackingId: face.hasTrackingID ? face.trackingID : undefined
92+
trackingId: face.hasTrackingID ? face.trackingID : undefined,
93+
bounds: face.frame,
94+
headEulerAngleY: face.headEulerAngleY,
95+
headEulerAngleZ: face.headEulerAngleZ
9096
});
9197
}
9298
resolve(result);

0 commit comments

Comments
 (0)