使用Google Mobile Vision for iOS对源图像大小的限制是什么?

时间:2016-12-07 05:14:24

标签: ios face-detection apple-vision google-ios-vision

使用GoogleMobileVision for iOS时遇到了一些问题。

UIImagePickerController设置如下

UIImagePickerController* picker = [[UIImagePickerController alloc]init];
picker.delegate = self;

picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
[self presentViewController:picker animated:YES completion:^
{
    self.faceImageView.layer.sublayers = nil; // drawing and re-drawing some lines...
}];

探测器:

[super viewDidLoad];
NSDictionary* options = @{
                          GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll),
                          GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
                          GMVDetectorFaceTrackingEnabled : @(NO),
                          //GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode) // Accurate mode detects face, but with wrong orientation; Fast mode can't detect faces!
                          };

self.faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];

但是,如果使用:picker.allowsEditing = YES;一切都很完美!

问题:图像尺寸的原因是什么? picker.allowsEditing = YES;在iPhone 6s和1932x2576上返回大小为750x750的图片,默认值为picker.allowsEditing

XCode v.8.1 iPhone 6S iOS 10.1.1 GoogleMobileVision v 1.0.4

2 个答案:

答案 0 :(得分:2)

使用this

标准化图像的方向
func imageByNormalizingOrientation() -> UIImage {
    if imageOrientation == .up {
        return self
    }
    UIGraphicsBeginImageContextWithOptions(size, false, scale)
    draw(in: CGRect(origin: CGPoint.zero, size: size))
    let normalizedImage: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return normalizedImage!
}

然后将输出图像发送到要素(在:,选项:)中。

答案 1 :(得分:0)

问题 -

每当裁剪后从拾取器获取图像(picker.allowsEditing = YES;)然后它可以工作但如果没有完成裁剪则不起作用(picker.allowsEditing = NO;)。

Obeseration -

每当使用picker.allowsEditing = YES;裁剪图像时,imageOrientation设置为up。

假设 -

谷歌移动视觉看起来与面向上的图像效果最佳。 但后来我发现了

让options = [GMVDetectorImageOrientation:GMVImageOrientation.leftTop.rawValue] // rightTop也有效 let faces = faceDetector.features(in:image,options:nil)as? [GMVFaceFeature] 但是,对于哪个imageOrientation要设置哪个GMVImageOrientation,这是相当令人困惑的。然后我使用this对方向进行了标准化。

因此,在将图像发送到要素(在:,选项:)时,只需将图像作为image.imageByNormalizingOrientation()发送。

这对我有用。