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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...