我正在尝试在Swift中将RGB值转换为YUV值。 支持RGB值为(185,206,201)。 转换代码:
let yExp = simd_float3(0.299, 0.587, 0.114)
let cbExp = simd_float3(-0.16874, -0.33126, 0.5)
let crExp = simd_float3(0.5, -0.41869, -0.08131)
let red = Float(185)
let green = Float(206)
let blue = Float(201)
let pixel = simd_float3(red, green, blue)
let y = simd_dot(yExp, pixel)
let cr = simd_dot(crExp, pixel) + 128.0
let cb = simd_dot(cbExp, pixel) + 128.0
cr在Swift中是129.043549。但是,当我使用C#或Java时,结果为129.043533。
如何在Swift中获得与C#和Java相同的结果?
答案 0 :(得分:0)
谢谢大家。我找到了解决方案,但这可能不是完美的解决方案。
let yExp = simd_double3(0.299, 0.587, 0.114)
let cbExp = simd_double3(-0.16874, -0.33126, 0.5)
let crExp = simd_double3(0.5, -0.41869, -0.08131)
let red = Double(185)
let green = Double(206)
let blue = Double(201)
let pixel = simd_double3(red, green, blue)
let y = Float(simd_dot(yExp, pixel))
let cr = Float(simd_dot(crExp, pixel) + 128.0)
let cb = Float(simd_dot(cbExp, pixel) + 128.0)
cr从double转换为float时将为129.04353。