2017-06-30 4 views
1

Ich versuche mit dem Image Alignment Analysis Teil der neuen Vision API zu spielen, aber ich habe Probleme mit der Initialisierung von VNTranslationalImageRegistrationRequest. Mein Code ist wie folgt:Neue Apple Vision API VNTranslationalImageRegistrationRequest

import UIKit 
import Vision 

class ImageTranslation { 

    var sourceImage: UIImage! 

    lazy var imageTranslationRequest: VNTranslationalImageRegistrationRequest = { 
//This line fails  let translationRequest = VNTranslationalImageRegistrationRequest(targetedCGImage: sourceImage.cgImage, completionHandler: self.handleImageTranslationRequest) 

     return translationRequest 
    }() 

    func handleImageTranslationRequest(request: VNRequest, error: Error?) { 

     guard let observations = request.results as? [VNImageTranslationAlignmentObservation] 
      else { print("unexpected result type from VNDetectRectanglesRequest") 
       return 
     } 
     guard observations.first != nil else { 
      return 
     } 
     DispatchQueue.main.async { 
      observations.forEach { observation in 
       let transform = observation.alignmentTransform 
       print(transform) 
      } 

     } 
    } 
} 

Aber auf der markierten Linie oben Ich erhalte die folgenden Fehler und ist nicht sicher, wie es zu beheben. Instance member 'sourceImage' cannot be used on type 'ImageTranslation'

Kann mir jemand in die richtige Richtung zeigen? Dank

+1

Bitte korrigieren Sie den Titel Ihrer Frage. Eigentlich Vision Framework ist Apple Framework nicht Google. – ninjaproger

Antwort

1

Managed sie arbeiten am Ende mit dem folgenden erhalten:

import UIKit 
import Vision 

class ImageTranslation { 

    func translateImages(for referenceImage: UIImage, 
         floatingImage: UIImage, 
         complete: @escaping (UIImage) -> Void) { 
     let translationRequest = VNTranslationalImageRegistrationRequest(targetedCGImage: floatingImage.cgImage!, completionHandler: self.handleImageTranslationRequest) 
     let vnImage = VNSequenceRequestHandler() 
     try? vnImage.perform([translationRequest], on: referenceImage.ciImage!) 
    } 

    func handleImageTranslationRequest(request: VNRequest, error: Error?) { 
     var alignmentTransform: CGAffineTransform! 
     if let results = request.results as? [VNImageTranslationAlignmentObservation] { 
      results.forEach { result in 
       alignmentTransform = result.alignmentTransform 

       print(alignmentTransform) 
      } 
     } 
    } 
}