gpt4 book ai didi

macos - CIDetector跟踪ID从不存在

转载 作者:行者123 更新时间:2023-12-03 16:19:37 25 4
gpt4 key购买 nike

我正在 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));
}
}
}

功能列表确实已正确填充,但跟踪ID似乎从未存在。有人在 Mavericks 做过这个吗?它在 Mountain Lion 上也以同样的方式失败。

我在这里看到了类似的问题(CIFaceFeature trackingID is always coming same for multiple faces),但我没有在那里学到任何新东西。

就其值(value)而言,它似乎在 iOS 上可以正常运行。

最佳答案

我再次查看了这段代码,答案非常明显:我不断地重新初始化 CIDetector,这对性能不利,而且还会导致每帧重置其内部跟踪数据。因此,第一次检测到面部始终是第一次为该特定 CIDetector 实例检测到面部。

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

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

关于macos - CIDetector跟踪ID从不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com