CVPixelBufferGetWidth(pixelbuffer)CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)CVPixelBufferGetHeight(pixelbuffer)CVPixelBufferGetHeightOfPlane(pixelbuffer, 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的文档请注意,传递非平面缓冲区时,它始终返回零。在那种情况下,返回值(对于平面0)不希望等于CVPixelBufferGetWidth

09-28 06:28