2016-12-07 72 views
3

我在使用GoogleMobileVision for iOS時遇到了一些問題。iOS版Google移動視覺對源圖像大小有任何限制?

隨着設置的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;一切完美!

問題:是圖像大小的原因?在iPhone 6S尺寸750x750的picker.allowsEditing = YES;回報圖像和1932x2576爲picker.allowsEditing

默認值的XCode訴8.1 iPhone 6S的iOS 9.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! 
} 

然後發送輸出圖像到features(in :, options :)中。

0

的problem-

每當圖像從選擇器裁剪後拍攝(picker.allowsEditing = YES;),那麼它的工作原理,但不若裁剪未完成的工作(picker.allowsEditing = NO)。

的Obeseration-

每當圖像通過使用picker.allowsEditing裁剪= YES;中,imageOrientation被設置爲向上。

的Assumption-

谷歌移動願景看起來是最好的工作最多面向圖像。 但後來我發現,

設選項= [GMVDetectorImageOrientation:GMVImageOrientation.leftTop.rawValue] // rightTop也適用 讓臉= faceDetector.features(在:圖像,選項:無)作爲? [GMVFaceFeature] 但是,這是相當混亂,哪個GMOmageOrientation被設置爲哪個imageOrientation。所以我通過使用this來標準化方向。

因此,當發送圖像功能(在:,選項:)只需發送圖像爲image.imageByNormalizingOrientation()。

這對我有效。