如何解决SwiftUI - 点击按钮执行视觉功能
所以我尝试在应用程序中使用 Vision + CoreML,是的,可以肯定,它使用 Apple 的 Resnet50 模型按预期工作。但是,我希望仅在用户点击按钮时使用 Vision。我相信这是可以检测对象是什么的函数:
private func setupVision() {
guard let model = try? VNCoreMLModel(for: visionClassifier.model) else { return }
request = VNCoreMLRequest(model: model) { (finishedReq,err) in
// Get the results list and the first observation
guard let results = finishedReq.results as? [VNClassificationObservation] else { return }
guard let firstObservation = results.first else { return }
// Format string output
let name: String = firstObservation.identifier
let conf: String = "Confidence: \(firstObservation.confidence * 100)"
// Return the results from the background thread to the main thread
DispatchQueue.main.async {
self.identifier = name
self.confidence = conf
}
}
}
因此,您可能认为只需在视图中调用该函数,但是,该函数是在 .onAppear()
方法上调用的:
func prepareCapture() {
setupSession()
setupVision()
startSession()
}
如果我去掉 setupVision() 函数,我的应用会在这一行崩溃:
func captureOutput(_ output: AVCaptureOutput,didOutput sampleBuffer: CMSampleBuffer,from connection: AVCaptureConnection) {
// The captured video frame is stored in a CVPixelBuffer object
guard let pixelBuffer: CVPixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
// Use a VNImageRequestHandler to perform the request
try? VNImageRequestHandler(cvPixelBuffer: pixelBuffer,options: [:]).perform([request])
//This line causes a crash
}
如何实现捕捉和扫描功能?我是否应该允许用户拍照(不向他们展示)并像使用 CoreML 和 ImagePicker 一样处理其余部分?
任何帮助都会很棒!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。