lei*_*rge 6 computer-vision cfdata ios swift ios11
我正在尝试按照此答案访问内在矩阵。
通过运行下面的命令,我获得了一个 48 字节的AnyObject,并进一步将其转换为CFData。
let camData = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil)
Run Code Online (Sandbox Code Playgroud)
但是,我检查了sampleBuffer的输出CMSampleBuffer.h
:
/*! @constant kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix
@abstract Indicates the 3x3 camera intrinsic matrix applied to the current sample buffer.
@discussion Camera intrinsic matrix is a CFData containing a matrix_float3x3, which is column-major.
....
*/
CM_EXPORT const CFStringRef kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix // CFData (matrix_float3x3) __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_11_0);
Run Code Online (Sandbox Code Playgroud)
matrix_float3x3
我应该如何访问from中的值CFData
?
这应该有效:
CFData
使用从到NSData
到 的桥接Data
,并且withUnsafeBytes
获取指向数据字节的所需类型的指针的方法,.pointee
取消引用指针。例子:
if let camData = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil) as? Data {
let matrix: matrix_float3x3 = camData.withUnsafeBytes { $0.pointee }
// ...
}
Run Code Online (Sandbox Code Playgroud)
指针类型($0
在闭包内)是从上下文中推断出来的UnsafePointer<matrix_float3x3>
。
归档时间: |
|
查看次数: |
2339 次 |
最近记录: |