开始使用前置摄像头玩MLKit面部探测器,但处理面部的速度确实很慢
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
print("Picture at ", Date())
let visionImage = VisionImage(buffer: sampleBuffer)
visionImage.metadata = metadata
faceDetector?.detect(in: visionImage) { (faces, error) in
guard error == nil, let faces = faces, !faces.isEmpty else {
// Error. You should also check the console for error messages.
let errorString = error?.localizedDescription
print("Face detection failed with error: \(errorString)")
return
}
}
我哪里错了?
答案 0 :(得分:5)
您可以尝试一些加速检测的方法:
在发布模式(优化)中构建应用程序,而不是调试模式。
创建faceDetector时,请务必使用VisionFaceDetectorOptions并将其isTrackingEnabled设置为true。
设置AVCaptureVideoDataOutput时,请将以下键值对添加到其videoSettings中:
key:kCVPixelBufferPixelFormatTypeKey
值:kCVPixelFormatType_32BGRA
答案 1 :(得分:0)
就我而言,我没有遵循正确的准则,即: 如果要在实时应用程序中使用面部检测,请遵循以下准则以获得最佳帧率:
配置面部检测器以使用面部轮廓检测或分类和界标检测,但不能同时使用两者:
轮廓检测和界标检测
轮廓检测和分类
轮廓检测,界标检测和分类
在此处找到所有指南: https://developers.google.com/ml-kit/vision/face-detection/android