У меня есть 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)!)
Я получаю ошибку в последней строке, которая говорит:
Cannot convert value of type 'UIImage?' to expected argument type 'String'
Любые идеи?
Предполагая, что вам нужно получить экземпляр VNFeaturePrintObservation
, вы можете запросить изображение вместо URL-адреса, используя 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)
@kitchen800 хорошо, не знаю, почему изображение nil
, но, вероятно, это другая проблема; Я предлагаю взглянуть на ответы здесь
спасибо посмотрю
спасибо, кажется, это избавляет меня от моей ошибки, однако image2 теперь возвращает ноль. это связано с изображением VNFeaturePrintObservation? ноль нет'. есть идеи по этому поводу?