Текст UILabel не меняется из набора текста в раскадровке в приложении классификации изображений - PullRequest
0 голосов
/ 05 июля 2019

Мне нужно обновить текст метки в зависимости от того, какое изображение классифицируется после прохождения через модель машинного обучения.Машинное обучение вернется, будь то лимон, лайм и т. Д., И я затем хочу напечатать это на экране.Однако, когда я загружаю приложение, текст метки не меняется, он просто показывает «Загрузка ...», что я и установил на своей раскадровке.

Я включил нижеприведенную функцию и ее объявление, поскольку это единственные экземпляры переменной.

 @IBOutlet weak var resultLabel: UILabel!

   @IBAction func scanImage(buffer: CVPixelBuffer) {
    guard let model = try? VNCoreMLModel(for: ImageClassifier().model) else { return }

    let request = VNCoreMLRequest(model: model) { request, _ in
        guard let results = request.results as? [VNClassificationObservation] else { return }

        //Gets most confident result
        guard let mostConfident = results.first else{ return }

        DispatchQueue.main.async {

            if mostConfident.confidence >= 0.9 {

                 let confidenceText = "\n \(Int(mostConfident.confidence * 100.0))% confidence"

                switch mostConfident.identifier {
                case "Lemon":
                    self.resultLabel.text = "Lemon. \(confidenceText)"
                case "Lime":
                    self.resultLabel.text = "Lime. \(confidenceText)"
                case "Red Onion":
                    self.resultLabel.text = "Red Onion. \(confidenceText)"
                case "Brocolli":
                    self.resultLabel.text = "Brocolli. \(confidenceText)"
                case "Spring Onion":
                    self.resultLabel.text = "Spring Onion. \(confidenceText)"
                default:
                    return
                }
            } else {
                self.resultLabel.text = "I don't know what this is, try again!"
            }
        }
    }

    let requestHandler = VNImageRequestHandler(cvPixelBuffer: buffer, options: [:])

    do {
        try requestHandler.perform([request])
    } catch {
        print(error)
    }
}

Кто-нибудь сможет подсказать, что я делаю неправильно, ипочему это не меняется?

...