我试图访问这个answer后面的固有矩阵。
通过运行下面的commission,我能够得到一个48字节的AnyObject,并进一步将其转换为CFData。
let camData = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil)
但是,我检查了CMSampleBuffer.h
中sampleBuffer的输出:
/*! @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);
如何从CFData
访问matrix_float3x3
中的值?
3条答案
按热度按时间0qx6xfy61#
这应该可以工作:
CFData
到NSData
再到Data
的桥接,以及withUnsafeBytes
方法获得指向数据字节的所需类型的指针,.pointee
取消引用指针。示例:
指针类型(闭包内部的
$0
)从上下文推断为UnsafePointer<matrix_float3x3>
。bf1o4zei2#
以下是Martin R在
withUnsafeBytes
被弃用后的回答的更新:bis0qfac3#
这是Martin R对Objective-c的回答: