私は 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 は存在しないようです。マーベリックスでこれを機能させた人はいますか? Mountain Lion でも同じように失敗します。
ここで同様の質問を見たことがあります ( CIFaceFeature trackingID は常に複数の顔に対して同じになります) が、そこで新しいことは何も学びませんでした。
価値があるのは、iOSで正しく機能するようです.