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

Commit 99820e2

Browse files
Fix face detection on iOS from still images #703
1 parent 945bfe5 commit 99820e2

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

docs/ML_KIT.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,12 @@ To be able to use Cloud features you need to do two things:
7575
|Feature|On-device|Cloud
7676
|---|---|---
7777
|[Text recognition](#text-recognition)|✅|✅
78-
|[Face detection](#face-detection)|✅*|
78+
|[Face detection](#face-detection)|✅|
7979
|[Barcode scanning](#barcode-scanning)|✅|
8080
|[Image labeling](#image-labeling)|✅|✅
8181
|[Landmark recognition](#landmark-recognition)||✅
8282
|[Custom model inference](#custom-model-inference)||
8383

84-
*) _Currently detecting faces from still images doesn't work on iOS (from the camera stream works fine tho)._
85-
8684
### Text recognition
8785
<img src="https://raw.githubusercontent.com/EddyVerbruggen/nativescript-plugin-firebase/master/docs/images/features/mlkit_text_recognition.png" height="153px" alt="ML Kit - Text recognition"/>
8886

src/mlkit/facedetection/index.ios.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ export class MLKitFaceDetection extends MLKitFaceDetectionBase {
2626

2727
for (let i = 0, l = faces.count; i < l; i++) {
2828
const face: FIRVisionFace = faces.objectAtIndex(i);
29-
console.log(">> face: " + face);
3029
result.faces.push({
3130
smilingProbability: face.hasSmilingProbability ? face.smilingProbability : undefined,
3231
leftEyeOpenProbability: face.hasLeftEyeOpenProbability ? face.leftEyeOpenProbability : undefined,
@@ -35,7 +34,6 @@ export class MLKitFaceDetection extends MLKitFaceDetectionBase {
3534
});
3635
}
3736

38-
console.log(">>> notify " + MLKitFaceDetection.scanResultEvent + " with " + JSON.stringify(result.faces));
3937
this.notify({
4038
eventName: MLKitFaceDetection.scanResultEvent,
4139
object: this,
@@ -69,7 +67,6 @@ function getDetector(options: MLKitDetectFacesOnDeviceOptions): FIRVisionFaceDet
6967
return firVision.faceDetectorWithOptions(firOptions);
7068
}
7169

72-
// TODO somehow this function doesn't work.. probably because of the passed image, but I can't find the cause.. the live camera version works great tho
7370
export function detectFacesOnDevice(options: MLKitDetectFacesOnDeviceOptions): Promise<MLKitDetectFacesOnDeviceResult> {
7471
return new Promise((resolve, reject) => {
7572
try {
@@ -103,6 +100,7 @@ export function detectFacesOnDevice(options: MLKitDetectFacesOnDeviceOptions): P
103100
}
104101

105102
function getImage(options: MLKitOptions): FIRVisionImage {
106-
const image: UIImage = options.image instanceof ImageSource ? options.image.ios : options.image.imageSource.ios;
107-
return FIRVisionImage.alloc().initWithImage(image);
103+
const image = options.image instanceof ImageSource ? options.image.ios : options.image.imageSource.ios;
104+
const newImage = UIImage.alloc().initWithCGImageScaleOrientation(image.CGImage, 1, UIImageOrientation.Up);
105+
return FIRVisionImage.alloc().initWithImage(newImage);
108106
}

0 commit comments

Comments
 (0)