通用YUV转换

. net颜色转换提供对图像的直接颜色转换。通用的YUV转换提供了将任何YUV格式转换为任何受支持的颜色空间的能力ConversionYuvParameters类,并遵守下面列出的限制。在定义了YUV格式之后,就可以像任何其他转换一样,正常地进行转换。使用转换方法来执行转换和调用停止方法释放所使用的转换资源。目前不支持从任何颜色空间到通用YUV的转换。

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

  1. 不支持Y的子采样。
  2. Y元素的个数必须是U和V的倍数。
  3. 对于非平面格式,不支持Y、U和V的垂直子采样。
  4. 平面格式不支持对齐;行宽不能包含额外的字节。
  5. U和V的水平子采样周期必须是彼此的倍数,U和V的垂直子采样周期必须是彼此的倍数。

例子

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

    VB
    进口Leadtools进口Leadtools。编解码器进口Leadtools。ColorConversion这个例子使用通用YUV转换将Y41P转换为RGB颜色空间。私人函数TestConvertGenericY41PToRgb (按值传递yuvBuffer作为字节(),按值传递宽度作为整数按值传递高度作为整数作为字节()'启动颜色转换。RasterColorConverter.Startup ()初始化Lab缓冲数组昏暗的rgbBuffer作为字节() =字节(yuvBuffer。长度- 1){}'格式的字节顺序;Y41P:' u0 y0 v0 y1 u4 y2 v4 y3 y4 y5 y6 y7' 0 1 2 3 4 5 6 7 8 9 10 11“先写Y分量,然后是U和V分量,如下所示:Y位:1,3,5,7,8,9,10,11' U位置:0,4' V位:2,6昏暗的抵消作为整数() = {1,3,5,7,8,9,10,11,0,4,2,6}初始化一个新的ConversionParameters类对象。昏暗的convParams作为ConversionParameters =ConversionParameters ()初始化YuvParameters类属性。昏暗的yuvParameters作为ConversionYuvParameters = ConversionYuvParameters。空确定美国的水平子抽样yuvParameters。Uh = 4确定美国的垂直子抽样yuvParameters。Uv = 1'确定V的水平子采样yuvParameters。Vh = 4'确定V的垂直子采样yuvParameters。Vv = 1'设置字节顺序yuvParameters。offset = offset“YUV值范围yuvParameters。Range = ConversionYuvRange。有用'这表示宏像素(允许的最小像素组),,它表示宏像素中有多少实际像素。这个值只有在非平面格式中才重要yuvParameters。MacroPixel = 8这是一个布尔值,表示YUV格式的类型(Planar = true,或non - Planar = false)。yuvParameters。平面=convParams。YuvParameters = YuvParameters确定转换中要使用的转换类型,对于YUVGeneric,只使用UseBuiltInconvParams。Method = ConversionMethodFlags。UseBuiltIn确定要激活的转换类型。对于YUVGeneric,只能使用UseBuiltInconvParams。ActiveMethod = ConversionMethodFlags。UseBuiltIn初始化一个新的Converter对象昏暗的转换器作为RasterColorConverter =RasterColorConverter ()试一试'初始化转换converter.Start (ConversionColorFormat。Yuv ConversionColorFormat。Rgb convParams)'将缓冲区从Yuv转换为Rgb转换器。转换(yuvBuffer, 0, rgbBuffer, 0, width, height, 0, 0)停止转换转换器。停止()前女友作为异常MessageBox.Show (ex.Message)返回没有什么结束试一试“关闭颜色转换。RasterColorConverter.Shutdown ()'返回转换后的缓冲区。返回rgbBuffer结束函数
    c#
    使用Leadtools;使用Leadtools.Codecs;使用Leadtools.ColorConversion;//这个例子使用通用YUV转换将Y41P转换为RGB颜色空间。私人字节[] TestConvertGenericY41PToRgb (字节[] yuvBuffer,int宽度,int高度){//启动颜色转换。RasterColorConverter.Startup ();//初始化Lab缓冲数组字节[] rgbBuffer =字节[yuvBuffer.Length];//格式的字节顺序;Y41P:// u0 y0 v0 y1 u4 y2 v4 y3 y4 y5 y6 y7// 0 1 2 3 4 5 6 7 8 9 10 11//先放Y分量,然后是U和V分量,如下所示:// Y坐标:1,3,5,7,8,9,10,11// U位置:0,4// V位置:2,6int[]抵消={1,3,5,7,8,9,10,11,0,4、2、6};//初始化一个新的ConversionParameters类对象ConversionParameters convParams =ConversionParameters ();//初始化YuvParameters类属性ConversionYuvParameters = ConversionYuvParameters. empty;//确定UyuvParameters。Uh = 4;//确定UyuvParameters。Uv = 1;//确定V的水平子采样yuvParameters。Vh = 4;//确定V的垂直子采样yuvParameters。Vv = 1;//设置字节顺序yuvParameters。offset = offset;// YUV值范围yuvParameters。Range = ConversionYuvRange.UseFull;//表示宏像素(允许的最小像素组),//表示宏像素中有多少实际像素。//该值仅在非平面格式中重要yuvParameters。MacroPixel = 8;//这是一个布尔值,表示YUV格式的类型(Planar = true,或non - Planar = false)。yuvParameters。平面=convParams。YuvParameters = YuvParameters;//确定转换中使用的转换类型,对于YUVGeneric,只使用UseBuiltInconvParams。Method = ConversionMethodFlags.UseBuiltIn;//确定要激活的转换类型。对于YUVGeneric,只能使用UseBuiltInconvParams。ActiveMethod = ConversionMethodFlags.UseBuiltIn;//初始化一个新的Converter对象RasterColorConverter转换器=RasterColorConverter ();试一试{//初始化转换converter.Start (ConversionColorFormat。Yuv ConversionColorFormat。Rgb, convParams);//将缓冲区从Yuv转换为Rgb转换器。转换(yuvBuffer, 0, rgbBuffer, 0, width, height, 0, 0);//停止转换converter.Stop ();}(异常交货){MessageBox.Show (ex.Message);返回}//关闭颜色转换。RasterColorConverter.Shutdown ();//返回转换后的缓冲区。返回rgbBuffer;}

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

    VB
    进口Leadtools进口Leadtools。编解码器进口Leadtools。ColorConversion这个例子使用通用YUV转换将YVU9 (Planar)转换为RGB颜色空间。私人函数TestConvertGenericYVU9ToRGB (按值传递yuvBuffer作为字节(),按值传递宽度作为整数按值传递高度作为整数作为字节()'启动颜色转换。RasterColorConverter.Startup ()初始化Lab缓冲数组昏暗的rgbBuffer作为字节() =字节(yuvBuffer。长度- 1){}'这个整数数组指定了yuv格式的字节顺序。对于平面格式,它只接受一个表示缓冲区中平面序列的值:“YUV, YVU, UYV, UVY, VYU,或vy。”昏暗的抵消作为整数() = {ConversionYuvParameters。PlanarYvu}PlanarYuv的意思是Y平面在缓冲区中首先出现,然后是V平面,最后是U平面。初始化一个新的Converter对象昏暗的转换器作为RasterColorConverter =RasterColorConverter ()初始化一个新的ConversionParameters类对象。昏暗的convParams作为ConversionParameters =ConversionParameters ()初始化YuvParameters属性类。昏暗的yuvParameters作为ConversionYuvParameters = ConversionYuvParameters。空设置U。yuvParameters。Uh = 4设置U。yuvParameters。Uv = 4'设置V的水平子采样。yuvParameters。Vh = 4'设置V的垂直子采样。yuvParameters。Vv = 4'传递字节顺序数组。yuvParameters。offset = offset范围值决定了YUV范围值。yuvParameters。Range = ConversionYuvRange。有用'这表示宏像素(允许的最小像素组),,它表示宏像素中有多少实际像素。这个值只有在非平面格式中才重要yuvParameters。MacroPixel = 16这是一个布尔值,表示YUV格式的类型(平面,或非平面)。yuvParameters。平面=真正的convParams。YuvParameters = YuvParameters’设置要使用的转换类型。对于YUVGeneric,只使用UseBuiltIn。convParams。Method = ConversionMethodFlags。UseBuiltIn’设置要激活的转换类型。对于YUVGeneric,只使用UseBuiltIn。convParams。ActiveMethod = ConversionMethodFlags。UseBuiltIn试一试初始化转换。converter.Start (ConversionColorFormat。Yuv ConversionColorFormat。Rgb convParams)'转换缓冲区。转换器。转换(yuvBuffer, 0, rgbBuffer, 0, width, height, 0, 0)“停止转换。转换器。停止()前女友作为异常MessageBox.Show (ex.Message)返回没有什么结束试一试“关闭颜色转换。RasterColorConverter.Shutdown ()'返回转换后的缓冲区。返回rgbBuffer结束函数
    c#
    使用Leadtools;使用Leadtools.Codecs;使用Leadtools.ColorConversion;//这个例子使用通用YUV转换将YVU9(平面)转换为RGB颜色空间。私人字节[] TestConvertGenericYVU9ToRGB (字节[] yuvBuffer,int宽度,int高度){//启动颜色转换。RasterColorConverter.Startup ();//初始化Lab缓冲数组字节[] rgbBuffer =字节[yuvBuffer.Length];//指定yuv格式的字节顺序。对于平面格式,它只接受一个表示缓冲区中平面序列的值:// YUV, YVU, UYV, UVY, VYU,或vy。int[] offset = {ConversionYuvParameters. []PlanarYvu};//PlanarYuv表示Y平面在缓冲区中首先出现,然后是V平面,最后是U平面。//初始化一个新的Converter对象RasterColorConverter转换器=RasterColorConverter ();//初始化一个新的ConversionParameters类对象ConversionParameters convParams =ConversionParameters ();初始化YuvParameters属性类ConversionYuvParameters = ConversionYuvParameters. empty;//设置U。yuvParameters。Uh = 4;//设置U。yuvParameters。Uv = 4;//设置V的水平子采样。yuvParameters。Vh = 4;//设置V的垂直子采样。yuvParameters。Vv = 4;//传递字节顺序数组。yuvParameters。offset = offset;//范围值决定YUV范围值。yuvParameters。Range = ConversionYuvRange.UseFull;//表示宏像素(允许的最小像素组),//表示宏像素中有多少实际像素。//该值仅在非平面格式中重要yuvParameters。MacroPixel = 16;//这是一个布尔值,表示YUV格式的类型(平面,或非平面)。yuvParameters。平面=真正的convParams。YuvParameters = YuvParameters;//设置要使用的转换类型对于YUVGeneric,只使用UseBuiltIn。convParams。Method = ConversionMethodFlags.UseBuiltIn;//设置要激活的转换类型对于YUVGeneric,只使用UseBuiltIn。convParams。ActiveMethod = ConversionMethodFlags.UseBuiltIn;试一试{//初始化转换。converter.Start (ConversionColorFormat。Yuv ConversionColorFormat。Rgb, convParams);//转换缓冲区。转换器。转换(yuvBuffer, 0, rgbBuffer, 0, width, height, 0, 0);//停止转换。converter.Stop ();}(异常交货){MessageBox.Show (ex.Message);返回}//关闭颜色转换。RasterColorConverter.Shutdown ();//返回转换后的缓冲区。返回rgbBuffer;}

LEADTOOLS成像、医疗和文档
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。