使用VNFaceObservation获取人脸的bounding box和landmark信息,但是一直没能从observation中找到人脸的pitch和yaw从哪里获取。
也曾尝试从 CIDetector 获取俯仰和偏航元数据,但同时运行 CIDetector 和 Vision Framework 会占用大量 CPU。
let metadataOutput = AVCaptureMetadataOutput()
let metaQueue = DispatchQueue(label: "MetaDataSession")
metadataOutput.setMetadataObjectsDelegate(self, queue: metaQueue)
if captureSession.canAddOutput(metadataOutput) {
captureSession.addOutput(metadataOutput)
} else {
print("Meta data output can not be added.")
}
let configurationOptions: [String: AnyObject] = [CIDetectorAccuracy: CIDetectorAccuracyHigh as AnyObject, CIDetectorTracking : true as AnyObject, CIDetectorNumberOfAngles: 11 as AnyObject]
faceDetector = CIDetector(ofType: CIDetectorTypeFace, context: nil, options: configurationOptions)
有没有办法使用 VNFaceObservation 数据来找到人脸的俯仰和偏航?
最佳答案
据我所知,CoreImage 中没有提供俯仰和偏航测量(我不熟悉 Vision Framework)。
然而,它可以使用 AVFoundation 检测到,如 this post 的示例项目所示。
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
for metadataObject in metadataObjects as! [AVMetadataFaceObject] {
DispatchQueue.main.async {
self.avFaceID.text = "face ID: \(metadataObject.faceID)"
self.avFaceRoll.text = "roll: \(Int(metadataObject.rollAngle))"
self.avFaceYaw.text = "yaw: \(Int(metadataObject.yawAngle))"
}
}
}
关于ios - 使用 Vision Framework 查找人脸的俯仰和偏航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291925/