1

我在让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)")
}

检测器.start() 没有产生错误,并且应用程序在第一次调用时请求访问相机,正如预期的那样。但是,从未调用任何委托函数。我已经对 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)

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

4

1 回答 1

1

问题似乎是检测器变量的声明。如果您在函数内部声明该变量,则该变量的生命周期仅适用于该函数——它在函数退出时被释放。

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

于 2015-11-21T22:17:29.713 回答