使用相机时,永远不会调用Affdex AFDXDetector委托功能吗?

时间:2015-11-21 18:20:40

标签: ios objective-c iphone affdex-sdk

我在使用Affdex iOS SDK处理来自板载相机的流式输入时遇到了一些麻烦。我正在使用XCode 7.1.1和iPhone 5S。这是我的初始化代码:

let detector = AFDXDetector.init(delegate: self, usingCamera: AFDX_CAMERA_FRONT, maximumFaces: 1)
detector.setDetectAllEmotions(true)
detector.setDetectAllExpressions(true)
detector.maxProcessRate = 5.0
detector.licensePath = NSBundle.mainBundle().pathForResource("sdk_kevin@sideapps.com", ofType: "license”)

if let error = detector.start() {
    log.warning("\(error)")
}

detector.start()不会产生错误,并且app会在第一次调用时请求访问摄像机,正如预期的那样。但是,没有调用任何委托函数。我已经使用AFDX_CAMERA_FRONT和AFDX_CAMERA_BACK进行了测试。

我可以使用以下方法按预期处理由车载相机捕捉的单张图像:

let detector = AFDXDetector(delegate: self, discreteImages: true, maximumFaces: 1)
detector.setDetectAllEmotions(true)
detector.setDetectAllExpressions(true)
detector.licensePath = NSBundle.mainBundle().pathForResource("sdk_kevin@sideapps.com", ofType: "license")

if let error = detector.start() {
    log.warning("\(error)")
}

detector.processImage(image)

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

问题似乎是探测器变量的声明。如果在函数内部声明它,那么该变量的生命周期仅限于该函数的范围 - 它在函数退出时被释放。

使变量成为类中的实例变量;这保证了它的生命周期是它实例化的对象的生命,并且也应该调用委托函数。