there is a problem getting out VNClassificationObservation.
My target identifier is to recognize the object and display a pop-up window with the name of the object, I can get the name, but I can not get the coordinates of the object or frame.
Here is the code:
let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: requestOptions)
do {
try handler.perform([classificationRequest, detectFaceRequest])
} catch {
print(error)
}
Then i process
func handleClassification(request: VNRequest, error: Error?) {
guard let observations = request.results as? [VNClassificationObservation] else {
fatalError("unexpected result type from VNCoreMLRequest")
}
let filteredOservations = observations[0...10].filter({ $0.confidence > 0.1 })
DispatchQueue.main.async { [weak self] in
for observation in filteredOservations {
print("observation: ",observation.identifier)
}
}
}
UPDATED:
lazy var classificationRequest: VNCoreMLRequest = {
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)")
}
}()
source
share