2016-12-07 1 views
3

У меня есть проблема при использовании GoogleMobileVision для iOS.Любые ограничения размера исходного изображения с помощью Google Mobile Vision для 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; возвращает изображение размером 750x750 на iPhone 6с и 1932x2576 для значения picker.allowsEditing

по умолчанию XCode v. 8.1 iPhone 6S IOS 10.1.1 GoogleMobileVision v 1.0.4

+0

Вы нашли что-нибудь об этом? –

+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! 
} 

, а затем отправить выходные изображения в функции (в :, опции :).

0

проблемно

Всякий раз, когда изображение берется из палитры после кадрирования (picker.allowsEditing = YES;), то она работает, но не работает, если кадрирование не делается (picker.allowsEditing = NO;).

Obeseration-

Всякий раз, когда изображение обрезается с помощью picker.allowsEditing = ДА ;, imageOrientation установлен в положение вверх.

Assumption-

Google мобильное видение выглядит, чтобы работать лучше всего с до ориентированных изображений. Но позже я узнал, что

опции ЛПЭ = [GMVDetectorImageOrientation: GMVImageOrientation.leftTop.rawValue] // rightTop также работает пусть Лица = faceDetector.features (в: изображения, опции: ноль), как? [GMVFaceFeature] Но это довольно запутывает то, что GMVImageOrientation будет установлено, для какого изображения. Итак, я нормализовал ориентацию, используя this.

Так что при отправке изображения в функции (в :, опции :) просто отправьте изображение как image.imageByNormalizingOrientation().

Это сработало для меня.

Смежные вопросы