首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CIDetector trackingID从不出现

CIDetector trackingID从不出现
EN

Stack Overflow用户
提问于 2013-11-15 00:59:36
回答 1查看 1.3K关注 0票数 3

我正在OSX Mavericks上编写一些人脸检测代码,并试图利用CIDetector提供的跨多张静止图像的新的( 10.8)人脸跟踪功能。

我让基本的人脸检测工作得很好,如下所示:

代码语言:javascript
复制
- (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 is always coming same for multiple faces),但我在那里没有学到任何新的东西。

值得注意的是,它似乎在iOS上运行正常。

EN

回答 1

Stack Overflow用户

发布于 2013-11-19 10:24:19

我再次查看了这段代码,结果发现答案非常明显:我不断地重新初始化CIDetector,这对性能不好,而且每一帧都会重新设置其内部跟踪数据。因此,对于特定的CIDetector实例,第一次检测到人脸总是第一次检测到人脸。

此外,CIDetector在文档中对此提出了警告:

“这个类可以维护许多可能影响性能的状态变量。因此,为了获得最佳性能,请重用CIDetector实例,而不是创建新实例。”,来自https://developer.apple.com/library/mac/documentation/CoreImage/Reference/CIDetector_Ref/Reference/Reference.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19983741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档