CVPixelBufferGetWidth(pixelbuffer)
和CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)
、CVPixelBufferGetHeight(pixelbuffer)
和CVPixelBufferGetHeightOfPlane之间有什么区别吗(像素缓冲区,0)
.
我搜索维基,它说:
As with most Y′UV formats, there are as many Y′ values as there are pixels.
它并没有说 y 的值对于所有格式都等于图像宽度。
所以如果
CVPixelBufferGetWidth(pixelbuffer) == CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)
和
CVPixelBufferGetHeight(pixelbuffer) == CVPixelBufferGetHeightOfPlane(pixelbuffer, 0)
最佳答案
并非所有像素缓冲区都是平面的(即包含多个数据平面,就像 YUV 缓冲区的情况一样)。在决定使用哪个函数查询宽度/高度之前,请检查 CVPixelBufferIsPlanar
看看您的是否是。 (当然,如果您从始终平面的源获取缓冲区,则可以安全地跳过该检查。)
CVPixelBufferGetWidthOfPlane
的文档指出,当传递非 FlatBuffers 时,它总是返回零。在这种情况下,返回值(对于平面 0)预计不会等于 CVPixelBufferGetWidth
的返回值。
关于ios - CVPixelBufferGetWidth(pixelbuffer) 和 CVPixelBufferGetWidthOfPlane(pixelbuffer, 0) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901997/