我有一個UIImage從CanvasView. 我想使用featureprintObservationForImage它的功能。但是它似乎需要一個 URL,而我正在嘗試提供一個 UIImage,我該如何解決這個問題?
這是我的代碼:
//getting image
UIGraphicsBeginImageContextWithOptions(theCanvasView.bounds.size, false, UIScreen.main.scale)
theCanvasView.drawHierarchy(in: theCanvasView.bounds, afterScreenUpdates: true)
let image2 = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//setting up observation for image
let drawing = featureprintObservationForImage(atURL: Bundle.main.url(image2)!)
我在最后一行收到錯誤訊息:
無法轉換“UIImage”型別的值?到預期的引數型別“字串”
有任何想法嗎?
uj5u.com熱心網友回復:
假設您需要獲取一個VNFeaturePrintObservation實體,您可以使用VNImageRequestHandler.
假設該featureprintObservationForImage方法是(或看起來像這樣):
func featureprintObservationForImage(atURL url: URL) -> VNFeaturePrintObservation? {
let requestHandler = VNImageRequestHandler(url: url, options: [:])
let request = VNGenerateImageFeaturePrintRequest()
do {
try requestHandler.perform([request])
return request.results?.first as? VNFeaturePrintObservation
} catch {
print("Vision error: \(error)")
return nil
}
}
你可以有一個不同的版本:
func featureprintObservationForImage(_ image: CIImage?) -> VNFeaturePrintObservation? {
guard let ciImage = image else {
return nil
}
let requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:])
let request = VNGenerateImageFeaturePrintRequest()
do {
try requestHandler.perform([request])
return request.results?.first as? VNFeaturePrintObservation
} catch {
print("Vision error: \(error)")
return nil
}
}
第二個的區別是:
該方法的簽名采用可選的
CIImage而不是URL.的初始化器
requestHandler。
所以:
let drawing = featureprintObservationForImage(image2?.ciImage)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/448206.html
