【问题标题】:How to get simple face detection working?如何让简单的人脸检测工作?
【发布时间】:2019-03-31 20:21:39
【问题描述】:

我正在尝试获取一个在 iOS 上使用 ML Kit 进行人脸检测的简单示例。以下是 Objective C 代码的摘录:

    FIRVisionFaceDetectorOptions *faceDetectorOptions;
    FIRVision *vision;
    FIRVisionFaceDetector *faceDetector;

    faceDetectorOptions = [[FIRVisionFaceDetectorOptions alloc] init];
    faceDetectorOptions.performanceMode = FIRVisionFaceDetectorPerformanceModeAccurate;
    faceDetectorOptions.landmarkMode = FIRVisionFaceDetectorLandmarkModeAll;
    faceDetectorOptions.contourMode = FIRVisionFaceDetectorContourModeNone;
    faceDetectorOptions.classificationMode = FIRVisionFaceDetectorClassificationModeAll;
    faceDetectorOptions.minFaceSize = 0.1; // TODO: finalize this option value

    vision = [FIRVision vision];
    faceDetector = [vision faceDetectorWithOptions:faceDetectorOptions];

    UIImage *staticImg = [UIImage imageNamed:@"sample.jpg"];
    FIRVisionImage *visionImage = [[FIRVisionImage alloc] initWithImage:staticImg];

    NSError* error = Nil;
    NSArray<FIRVisionFace *> * faces = [faceDetector resultsInImage:visionImage error:&error];
    NSLog(@"Synchronous result. error = %@, face count = %lu", error, faces.count);

sample.jpg 文件是下载并作为资源添加到我的 Xcode 项目中的以下图像: http://chwb.org/wp-content/uploads/2014/01/Theo_Janssen-Face1.jpg

resultsInImage 没有返回错误,但也没有面孔。它记录:

Synchronous result. error = (null), face count = 0

我做错了吗?

【问题讨论】:

    标签: firebase tensorflow-lite firebase-mlkit


    【解决方案1】:

    我想通了。问题是我需要像这样设置图像元数据:

        FIRVisionImageMetadata *imageMetadata = [FIRVisionImageMetadata new];
        imageMetadata.orientation = [FcFaceDetector visionImageOrientationFromImageOrientation:uiImage.imageOrientation];
        visionImage.metadata = imageMetadata;
    
    + (FIRVisionDetectorImageOrientation) visionImageOrientationFromImageOrientation:(UIImageOrientation)imageOrientation {
        switch (imageOrientation) {
                case UIImageOrientationUp:
                return FIRVisionDetectorImageOrientationTopLeft;
                case UIImageOrientationDown:
                return FIRVisionDetectorImageOrientationBottomRight;
                case UIImageOrientationLeft:
                return FIRVisionDetectorImageOrientationLeftBottom;
                case UIImageOrientationRight:
                return FIRVisionDetectorImageOrientationRightTop;
                case UIImageOrientationUpMirrored:
                return FIRVisionDetectorImageOrientationTopRight;
                case UIImageOrientationDownMirrored:
                return FIRVisionDetectorImageOrientationBottomLeft;
                case UIImageOrientationLeftMirrored:
                return FIRVisionDetectorImageOrientationLeftTop;
                case UIImageOrientationRightMirrored:
                return FIRVisionDetectorImageOrientationRightBottom;
        }
    }
    

    文档似乎并不清楚,因为它似乎建议不要设置它: https://firebase.google.com/docs/ml-kit/ios/detect-faces#2-run-the-face-detector

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2012-09-26
      • 2011-08-14
      • 2019-11-18
      • 2013-09-24
      • 2020-06-28
      • 2016-11-18
      • 2012-04-17
      • 1970-01-01
      相关资源
      最近更新 更多