使用相机时从不调用 Affdex AFDXDetector 委托函数?
Affdex AFDXDetector delegate functions are never called when using the camera?
我在让 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() 没有产生任何错误,应用程序在第一次调用时请求访问相机,正如预期的那样。但是,曾经调用过 none 的委托函数。我已经用 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)
我是不是遗漏了什么明显的东西?
问题似乎是 检测器 变量的声明。如果您在函数内部声明该变量,则该变量的生命周期仅适用于该函数 - 它在函数退出时被释放。
使变量成为class中的实例变量;这保证了它的生命周期是在它被实例化的对象的生命周期内,并且委托函数也应该被调用。
我在让 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() 没有产生任何错误,应用程序在第一次调用时请求访问相机,正如预期的那样。但是,曾经调用过 none 的委托函数。我已经用 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)
我是不是遗漏了什么明显的东西?
问题似乎是 检测器 变量的声明。如果您在函数内部声明该变量,则该变量的生命周期仅适用于该函数 - 它在函数退出时被释放。
使变量成为class中的实例变量;这保证了它的生命周期是在它被实例化的对象的生命周期内,并且委托函数也应该被调用。