我正在使用框架(moodme)来检测iphone相机上的人脸,我需要将图像或框架传递到moodme实例。
我已将相机输出转换为uiimage,但框架未检测到任何人脸。(我想)
所以我想把缓冲区传递给framework,它要求我输入一个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)
}
抱歉,有任何英文错误:)
最佳答案
你已经在代码中这样做了。pixelbuffer变量是一个cvimagebuffer
let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
关于swift - 有没有办法将CMSampleBuffer转换为CVImageBuffer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48344979/