2016-12-07 2 views
3

J'ai un problème lors de l'utilisation de GoogleMobileVision pour iOS.Aucune limite pour la taille de l'image source avec Google Mobile Vision pour iOS?

Avec UIImagePickerController Posé comme ce

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... 
}]; 

Et détecteur:

[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]; 

Mais, si vous utilisez: picker.allowsEditing = YES; tout fonctionne parfaitement!

Question: est la raison dans les tailles d'image? l'image picker.allowsEditing = YES; de retour de la taille 750x750 sur iPhone 6s et 1932x2576 pour la valeur par défaut de picker.allowsEditing

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

+0

Avez-vous trouvé quelque chose à propos de ça? –

+0

Ce n'est sûrement pas à propos de la taille car j'ai essayé de l'alimenter de plus petite taille et ça ne fonctionnait toujours pas. –

Répondre

2

normalisent Juste l'orientation de l'image en utilisant 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! 
} 

puis d'envoyer l'image de sortie aux entités (dans :, options :).

0

Le problème-

Chaque fois que l'image est prise de sélecteur après recadrage (picker.allowsEditing = OUI;) il fonctionne mais ne fonctionne pas si la culture ne se fait pas (picker.allowsEditing = NO;).

Le Obeseration-

Chaque fois que l'image est recadrée en utilisant picker.allowsEditing = YES ;, le imageOrientation est réglé sur place.

Le Assumption-

Google vision mobile semble fonctionner mieux avec des images orientées. Mais plus tard, je trouve que

let options = [GMVDetectorImageOrientation: GMVImageOrientation.leftTop.rawValue] // rightTop fonctionne aussi laisser visages = faceDetector.features (dans: l'image, options: néant) comme? [GMVFaceFeature] Mais cela est assez déroutant que GMVImageOrientation à définir pour quelle imageOrientation. Alors j'ai normalisé l'orientation en utilisant this.

Ainsi, lors de l'envoi d'images à des entités (dans :, options :), il suffit d'envoyer l'image sous la forme image.imageByNormalizingOrientation().

Cela a fonctionné pour moi.