¿Cómo cambiar la orientación de CIDetector?

Entonces estoy tratando de hacer un detector de text usando CIDetector en swift. Cuando señalo mi teléfono con un text, no lo detecta. Sin embargo, si giro el teléfono hacia un lado, funciona y detecta el text. ¿Cómo puedo cambiarlo para que detecte el text con la orientación correcta de la camera? Aquí está mi código:

Prepare la function del detector de text:

func prepareTextDetector() -> CIDetector { let options: [String: AnyObject] = [CIDetectorAccuracy: CIDetectorAccuracyHigh, CIDetectorAspectRatio: 1.0] return CIDetector(ofType: CIDetectorTypeText, context: nil, options: options) } 

Función de detección de text:

 func performTextDetection(image: CIImage) -> CIImage? { if let detector = detector { // Get the detections let features = detector.featuresInImage(image) for feature in features as! [CITextFeature] { resultImage = drawHighlightOverlayForPoints(image, topLeft: feature.topLeft, topRight: feature.topRight, bottomLeft: feature.bottomLeft, bottomRight: feature.bottomRight) imagex = cropBusinessCardForPoints(resultImage!, topLeft: feature.topLeft, topRight: feature.topRight, bottomLeft: feature.bottomLeft, bottomRight: feature.bottomRight) } } return resultImage } 

Funciona cuando está orientado como el izquierdo, pero no para el correcto:

introduzca la descripción de la imagen aquí

Creo que tienes que usar CIDetectorImageOrientation , como Apple dijo en su documentation CITextFeature :

[…] use la opción CIDetectorImageOrientation para especificar la orientación deseada para encontrar text vertical.

Por ejemplo, tienes que hacer

 let features = detector.featuresInImage(image, options: [CIDetectorImageOrientation : 1]) 

donde 1 es el número exif y depende de la orientación, que se puede calcular como

 func imageOrientationToExif(image: UIImage) -> uint { switch image.imageOrientation { case UIImageOrientation.Up: return 1; case UIImageOrientation.Down: return 3; case UIImageOrientation.Left: return 8; case UIImageOrientation.Right: return 6; case UIImageOrientation.UpMirronetworking: return 2; case UIImageOrientation.DownMirronetworking: return 4; case UIImageOrientation.LeftMirronetworking: return 5; case UIImageOrientation.RightMirronetworking: return 7; } } 
    Intereting Posts