我从我的AVCaptureSession获得了一个CV
ImageBufferRef,我想把这个图像缓冲区并通过网络上传.为了节省空间和时间,我想这样做而不将图像渲染成CIImage和NSBitmapImage,这是我到处看到的解决方案(例如:
How can I obtain raw data from a CVImageBuffer object).
这是因为我的印象是CVImageBuffer可能会被压缩,这对我来说很棒,如果我渲染它,我必须将其解压缩成一个完整的位图,然后上传整个位图.我想获取压缩数据(意识到单个压缩帧可能在以后自身无法实现),就像它位于CVImageBuffer中一样.我想这意味着我想要CVImageBuffer的基本数据指针及其长度,但它似乎没有办法在API中获得它.有人有什么想法吗?
解决方法
CVImageBuffer本身是一种抽象类型.您的图像应该是CVPixelBuffer,CVOpenGLBuffer或CVOpenGLTexture的实例.这些类型的文档列出了可用于访问数据的功能.
要告诉您使用GetTypeID方法的类型:
CVImageBufferRef image = …; CFTypeID imageType = CfgetTypeID(image); if (imageType == CVPixelBufferGetTypeID()) { // Pixel Data } else if (imageType == CVOpenGLBufferGetTypeID()) { // OpenGL pbuffer } else if (imageType == CVOpenGLTextureGetTypeID()) { // OpenGL Texture }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。