Swift 使用CVPixelBuffer反复调用Vision时iOS崩溃
我有一个应用程序,它反复告诉Swift 使用CVPixelBuffer反复调用Vision时iOS崩溃,swift,machine-learning,computer-vision,core-video,apple-vision,Swift,Machine Learning,Computer Vision,Core Video,Apple Vision,我有一个应用程序,它反复告诉VNImageRequestHandler对象从iOS摄像头提供给我的CVPixelBuffer执行vntetectFacetAnglesRequest 我经常看到结构发生如下崩溃: var isValid: Bool { let cvBufferWidth = CVPixelBufferGetWidth(self) let cvBufferHeight = CVPixelBufferGetHeight(self) let size = CVP
VNImageRequestHandler
对象从iOS摄像头提供给我的CVPixelBuffer
执行vntetectFacetAnglesRequest
我经常看到结构发生如下崩溃:
var isValid: Bool {
let cvBufferWidth = CVPixelBufferGetWidth(self)
let cvBufferHeight = CVPixelBufferGetHeight(self)
let size = CVPixelBufferGetDataSize(self)
let bytesPerRow = CVPixelBufferGetBytesPerRow(self)
guard cvBufferWidth > 0 && cvBufferHeight > 0 && size > 0 && bytesPerRow > 0 else {
return false
}
return true
}
#0崩溃:com.apple.main thread
EXC\u错误\u访问内核\u无效\u地址0x0000000000000000
0核心视频
CVPixelBufferGetWidth+20
在将扩展传递给vision之前,我已经尝试使用扩展验证我的CVPixelBuffer
,如下所示:
var isValid: Bool {
let cvBufferWidth = CVPixelBufferGetWidth(self)
let cvBufferHeight = CVPixelBufferGetHeight(self)
let size = CVPixelBufferGetDataSize(self)
let bytesPerRow = CVPixelBufferGetBytesPerRow(self)
guard cvBufferWidth > 0 && cvBufferHeight > 0 && size > 0 && bytesPerRow > 0 else {
return false
}
return true
}
我一次也只处理一个CVPixelBuffer
(苹果有一个示例项目在评论中说这是最佳实践)
我该怎么办?我似乎无法摆脱这只虫子!!我应该锁定CVPixelBuffer
的基址吗
CVPixelBufferLockBaseAddress(self,CVPixelBufferLockFlags.readOnly)
苹果说如果使用GPU就不要这样做,我知道vision在某些情况下会使用GPU
有什么想法吗?你找到解决这个问题的方法了吗?是的,我停止使用vision,正在使用另一家商业人脸识别供应商。