我正在使用框架(MoodMe)来检测iPhone相机上的面孔,我需要将图像或框架传递给MoodMe实例。
我已将相机输出转换为UIImage,但框架未检测到任何面部。 (我认为)
所以我想将我的缓冲区传递给框架,它要求我提供一个CVImageBuffer变量,但我不知道如何(如果可能的话)将我从相机输出收到的CMSampleBuffer转换为CVImageBuffer。有办法做到这一点吗?
我的代码:
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
let attachments = CMCopyDictionaryOfAttachments(kCFAllocatorDefault, sampleBuffer, kCMAttachmentMode_ShouldPropagate)
let ciImage = CIImage(cvImageBuffer: pixelBuffer!, options: attachments as! [String : Any]?)
let img = UIImage(ciImage: ciImage)
mdm.processImage(img)
// it does not works
if mdm.faceTracked {
print("Face")
} else {
print("Not face")
}
// mdm.processImageBuffer(frame: CVImageBuffer! var)
}
对于任何英语错误抱歉:)
答案 0 :(得分:3)
您已在代码中执行此操作。 pixelBuffer变量是CVImageBuffer
let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)