3

我正在尝试使用新 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)
            }

        }
    }
}

但是在上面的标记线上,我不断收到以下错误,并且不确定如何修复它。Instance member 'sourceImage' cannot be used on type 'ImageTranslation'

谁能指出我正确的方向?谢谢

4

1 回答 1

6

如何在两个图像上使用VNTranslationalImageRegistrationRequest来计算两个图像之间的平移的示例:

import UIKit
import Vision

class ImageTranslation {

    func translateImages(for referenceImage: UIImage,
                         floatingImage: UIImage,
                         completion: @escaping (_ alignmentTransform : CGAffineTransform?) -> Void) {
        let translationRequest = VNTranslationalImageRegistrationRequest(targetedCGImage: floatingImage.cgImage!) { (request: VNRequest, error: Error?) in
            completion((request.results?.first as? VNImageTranslationAlignmentObservation)?.alignmentTransform)
        }
        let vnImage = VNSequenceRequestHandler()
        try? vnImage.perform([translationRequest], on: referenceImage.cgImage!)
    }

}
于 2017-07-01T20:12:50.960 回答