现在,我尝试将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。
请教我一下。
发布于 2019-10-09 21:49:03
有了这个,你可以转换成ARGB8888 vImageConvert_420Yp8_CbCr8ToARGB8888
和muss创建一个vImage_Buffer
转换矩阵示例
/// 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
}()
https://stackoverflow.com/questions/58304164
复制相似问题