Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用CVPixelBuffer反复调用Vision时iOS崩溃_Swift_Machine Learning_Computer Vision_Core Video_Apple Vision - Fatal编程技术网

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,正在使用另一家商业人脸识别供应商。