【问题标题】:What is the difference between CVPixelBufferGetWidth(pixelbuffer) and CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)?CVPixelBufferGetWidth(pixelbuffer) 和 CVPixelBufferGetWidthOfPlane(pixelbuffer, 0) 有什么区别?
【发布时间】:2019-09-17 23:56:33
【问题描述】:

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)

【问题讨论】:

    标签: ios swift yuv cvpixelbuffer


    【解决方案1】:

    并非所有像素缓冲区都是平面的(也就是说,包含多个数据平面,就像 YUV 缓冲区的情况一样)。在决定使用哪个函数查询宽度/高度之前,请检查 CVPixelBufferIsPlanar 以查看您的是否是。 (当然,如果您从始终为平面的源获取缓冲区,您可以安全地跳过该检查。)

    CVPixelBufferGetWidthOfPlane 的文档请注意,它在传递非平面缓冲区时总是返回零。在这种情况下,返回值(对于平面 0)不应等于 CVPixelBufferGetWidth 的返回值。

    【讨论】:

    • 如果像素缓冲区是平面的,在iOS平台上是CVPixelBufferGetWidth(pixelbuffer) == CVPixelBufferGetWidthOfPlane(pixelbuffer, 0)
    猜你喜欢
    • 2022-12-19
    • 2020-02-06
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2018-05-06
    • 2016-03-23
    • 2021-06-16
    相关资源
    最近更新 更多