作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在我运行 AVDepthPhotoFilter
,从 iPhone7Plus 的立体摄像头渲染深度 Deta。
所以,我想访问每像素深度数据,但是,我不知道该怎么做。请指教。
最佳答案
如何获取DepthData并分析CVPixelBuffer数据
您需要确保 AVCapturePhotoSettings() 的 isDepthDataDeliveryEnabled = true
您必须使用函数func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?)
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
//## Convert Disparity to Depth ##
let depthData = (photo.depthData as AVDepthData!).converting(toDepthDataType: kCVPixelFormatType_DepthFloat32)
let depthDataMap = depthData.depthDataMap //AVDepthData -> CVPixelBuffer
//## Data Analysis ##
// Useful data
let width = CVPixelBufferGetWidth(depthDataMap) //768 on an iPhone 7+
let height = CVPixelBufferGetHeight(depthDataMap) //576 on an iPhone 7+
CVPixelBufferLockBaseAddress(depthDataMap, CVPixelBufferLockFlags(rawValue: 0))
// Convert the base address to a safe pointer of the appropriate type
let floatBuffer = unsafeBitCast(CVPixelBufferGetBaseAddress(depthDataMap), to: UnsafeMutablePointer<Float32>.self)
// Read the data (returns value of type Float)
// Accessible values : (width-1) * (height-1) = 767 * 575
let distanceAtXYPoint = floatBuffer[Int(x * y)]
}
如果您想了解有关 CVPixelBuffer 分析的更多信息,这里有一篇有用的文章 -> details
关于swift - DepthData - 获取每像素深度数据(CVPixelBuffer数据分析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794561/
现在我运行 AVDepthPhotoFilter,从 iPhone7Plus 的立体摄像头渲染深度 Deta。 所以,我想访问每像素深度数据,但是,我不知道该怎么做。请指教。 最佳答案 如何获取Dep
我是一名优秀的程序员,十分优秀!