我正在研究 OSX Mavericks 上的一些人脸检测代码,并且我正在尝试利用 CIDetector 提供的跨多个静止图像功能的新的(截至 10.8 的)人脸跟踪。
我的基本面部检测工作正常,如下所示:
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection {
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CIImage *image = [CIImage imageWithCVImageBuffer:imageBuffer];
CIDetector *faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace
context:nil
options:@{ CIDetectorAccuracy : CIDetectorAccuracyHigh,
CIDetectorTracking : @YES
}];
NSArray *features = [faceDetector featuresInImage:image];
for ( CIFaceFeature *feature in features ) {
if (feature.hasTrackingID) {
NSLog(@"tracking id: %@", @(feature.trackingID));
}
}
}
功能列表确实已正确填充,但该 trackingID 似乎从未存在。有没有人在小牛队得到这个工作?它在山狮上以同样的方式失败。
我在这里看到了一个类似的问题(CIFaceFeature trackingID 对于多个面孔总是相同的),但我在那里没有学到任何新东西。
值得一提的是,它似乎在 iOS 上运行正常。