Мне нужно обновить текст метки в зависимости от того, какое изображение классифицируется после прохождения через модель машинного обучения.Машинное обучение вернется, будь то лимон, лайм и т. Д., И я затем хочу напечатать это на экране.Однако, когда я загружаю приложение, текст метки не меняется, он просто показывает «Загрузка ...», что я и установил на своей раскадровке.
Я включил нижеприведенную функцию и ее объявление, поскольку это единственные экземпляры переменной.
@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)
}
}
Кто-нибудь сможет подсказать, что я делаю неправильно, ипочему это не меняется?