in performance/SwiftUIPerformanceQuickstart/PerformanceExample/Shared/Process.swift [245:279]
func classifyImage() {
guard let uiImage = image, let ciImage = CIImage(image: uiImage) else {
print("Could not convert image into correct format.")
updateStatus(to: .failure(.classify))
return
}
let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])
let request = VNClassifyImageRequest()
updateStatus(to: .running(.classify))
let trace = makeTrace(called: "Classification")
trace?.start()
try? handler.perform([request])
trace?.stop()
#if swift(>=5.5)
guard let observations = request.results else {
print("Failed to obtain classification results.")
updateStatus(to: .failure(.classify))
return
}
#else
guard let observations = request.results as? [VNClassificationObservation] else {
print("Failed to obtain classification results.")
updateStatus(to: .failure(.classify))
return
}
#endif
categories = observations
.filter { $0.hasMinimumRecall(0.01, forPrecision: precision) }
.map { ($0.identifier, $0.confidence) }
updateStatus(to: .success(.classify))
}