從VNClassificationObservation
獲取問題。如何從VNClassificationObservation獲取對象矩形/座標
我的目標ID識別對象並顯示彈出對象名稱,我能夠獲取名稱,但我無法獲取對象座標或框架。
這裏是代碼:
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)")
}
}()
我使用Inceptionv3()。模型,它看起來我無法獲得座標。 – Svitlana
這是因爲Inception-v3不給你座標,只有類名的字典和這些類的概率。 –
好的,非常感謝你,會搜索另一個模型 – Svitlana