func classifyImage()

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))
  }