首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将pixelBuffer(kCVPixelFormatType_420YpCbCr8Planar)转换为CIImage

将pixelBuffer(kCVPixelFormatType_420YpCbCr8Planar)转换为CIImage
EN

Stack Overflow用户
提问于 2019-10-09 20:29:22
回答 1查看 680关注 0票数 0

现在,我尝试将pixelBuffer转换为CIImage,但失败了。

当pixelBuffer类型为kCVPixelFormatType_420YpCbCr8BiPlanarFullRange,时,可以执行以下代码而不会出现错误。

let sourceImage = CIImage.init(cvPixelBuffer: imageBuffer, options: nil)

但是,当pixelBuffer类型为kCVPixelFormatType_420YpCbCr8Planar时,它将失败。

日志如下。

[api] -[CIImage initWithCVPixelBuffer:options:] failed because its pixel format y420 is not supported.

因此,我想知道如何转换pixelBuffer类型或将pixelBuffer(kCVPixelFormatType_420YpCbCr8Planar)转换为CIImage。

请教我一下。

EN

回答 1

Stack Overflow用户

发布于 2019-10-09 21:49:03

查看vImageConverter

有了这个,你可以转换成ARGB8888 vImageConvert_420Yp8_CbCr8ToARGB8888和muss创建一个vImage_Buffer

转换矩阵示例

代码语言:javascript
运行
复制
/// This is the YCbCr to RGB conversion opaque object used by the convert function.
private var conversionMatrix: vImage_YpCbCrToARGB = {
    var pixelRange = vImage_YpCbCrPixelRange(Yp_bias: 0, CbCr_bias: 128, YpRangeMax: 255, CbCrRangeMax: 255, YpMax: 255, YpMin: 1, CbCrMax: 255, CbCrMin: 0)
    var matrix = vImage_YpCbCrToARGB()
    vImageConvert_YpCbCrToARGB_GenerateConversion(kvImage_YpCbCrToARGBMatrix_ITU_R_709_2, &pixelRange, &matrix, kvImage420Yp8_CbCr8, kvImageARGB8888, UInt32(kvImageNoFlags))
    return matrix
}()

示例代码:CapturedImageSampler.swift

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58304164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档