我在使用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)
我错过了一些明显的东西吗?
答案 0 :(得分:1)
问题似乎是探测器变量的声明。如果在函数内部声明它,那么该变量的生命周期仅限于该函数的范围 - 它在函数退出时被释放。
使变量成为类中的实例变量;这保证了它的生命周期是它实例化的对象的生命,并且也应该调用委托函数。