从VNClassificationObservation获取问题.
我的目标是识别对象并使用对象名称显示弹出窗口,我能够获得名称,但我无法获得对象坐标或框架.
这是代码:
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer,options: requestOptions) do { try handler.perform([classificationRequest,detectFaceRequest]) } catch { print(error) }
然后我处理
func handleClassification(request: VNRequest,error: Error?) { guard let observations = request.results as? [VNClassificationObservation] else { fatalError("unexpected result type from VNCoreMLRequest") } // Filter observation let filteredOservations = observations[0...10].filter({ $0.confidence > 0.1 }) // Update UI DispatchQueue.main.async { [weak self] in for observation in filteredOservations { print("observation: ",observation.identifier) //HERE: I need to display popup with observation name } } }
更新:
lazy var classificationRequest: VNCoreMLRequest = { // Load the ML model through its generated class and create a Vision request for it. do { let model = try VNCoreMLModel(for: Inceptionv3().model) let request = VNCoreMLRequest(model: model,completionHandler: self.handleClassification) request.imageCropAndScaleOption = VNImageCropAndScaleOptionCenterCrop return request } catch { fatalError("can't load Vision ML model: \(error)") } }()