通用YUV转换(Visual Basic)

通用的YUV转换提供了将任何YUV格式转换为任何支持的颜色空间的能力,使用YUV_PARAMS结构并遵守下面列出的限制。在定义了YUV格式之后,就可以像任何其他转换一样,正常地进行转换。使用L_ClrConvert执行转换和调用L_ClrFree释放转换句柄。目前不支持从任何颜色空间到通用YUV的转换。

通用YUV转换目前有以下限制:

  1. 不支持Y的子采样

  2. Y元素的个数必须是U和V的倍数。

  3. 对于非平面格式,不支持Y、U和V的垂直子采样。

  4. 平面格式不支持对齐;行宽不能包含额外的字节。

  5. U和V的水平子采样周期必须是彼此的倍数,U和V的垂直子采样周期也必须是彼此的倍数。

例子:

  1. 使用通用YUV转换Y41P到RGB:

    函数GenericY41PToRGB(YUVData() As Byte, RGBData() As Byte, nWidth As Integer, nHeight As Integer) As Integer将ret设为整数Dim ClrHandle As Long将cnvParam设置为CONVERSION_PARAMSDim pOff(12) As LongpOff(0) = 1pOff(1) = 3pOff(2) = 5pOff(3) = 7pOff(4) = 8pOff(5) = 9pOff(6) = 10pOff(7) = 11pOff(8) = 0pOff(9) = 4pOff(10) = 2pOff(11) = 6”(1,3,5,7,8,9,10,11,0,4、2、6)Dim YUVParamas As LPYUV_PARAMS与YUVParamas.uStructSize = Len(YUVParamas).nMask = 0.nUh = 4.nUv = 1.nVh = 4.nVv = 1.pOffsets = VarPtr(pOff(0)).nMacroPixel = 8.nRange = YUVRANGE_FULL.bPlanar = 0结尾cnvParam。uStructSize = Len(cnvParam)cnvParam。nquantiization = 0cnvParam。nMethod = USE_BUILTINcnvParam。nActiveMethod = USE_BUILTINcnvParam。pCmykParams = 0cnvParam。pLabParams = 0cnvParam。pYuvParams = VarPtr(YUVParamas)cnvParam.sInputProfile(0) = 0cnvParam.sOutputProfile(0) = 0(ClrHandle, CCS_YUV, CCS_RGB, cnvParam)ret = L_ClrConvert (ClrHandle, YUVData(0), RGBData(0), nWidth, nHeight, 0,0)ret = L_ClrFree (ClrHandle)GenericY41PToRGB = ret结束函数

  2. 使用通用YUV转换YVU9(平面)到RGB:

    函数genericyvu9toorgb (YUVData() As Byte, RGBData() As Byte, nWidth As Integer, nHeight As Integer) As Integer将ret设为整数Dim ClrHandle As Long将cnvParam设置为CONVERSION_PARAMSDim pOff(0) As LongpOff(0) = PLANAR_YVUDim YUVParamas As LPYUV_PARAMS与YUVParamas.uStructSize = Len(YUVParamas).nMask = 0.nUh = 4.nUv = 1.nVh = 4.nVv = 1.pOffsets = VarPtr(pOff(0)).nMacroPixel = 8.nRange = YUVRANGE_FULL.bPlanar = 1结尾cnvParam。uStructSize = Len(cnvParam)cnvParam。nquantiization = 0cnvParam。nMethod = USE_BUILTINcnvParam。nActiveMethod = USE_BUILTINcnvParam。pCmykParams = 0cnvParam。pLabParams = 0cnvParam。pYuvParams = VarPtr(YUVParamas)cnvParam.sInputProfile(0) = 0cnvParam.sOutputProfile(0) = 0(ClrHandle, CCS_YUV, CCS_RGB, cnvParam)ret = L_ClrConvert (ClrHandle, YUVData(0), RGBData(0), nWidth, nHeight, 0,0)ret = L_ClrFree (ClrHandle)GenericYVU9ToRGB = ret结束函数

颜色转换C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。