. net颜色转换提供对图像的直接颜色转换。通用的YUV转换提供了将任何YUV格式转换为任何受支持的颜色空间的能力ConversionYuvParameters类,并遵守下面列出的限制。在定义了YUV格式之后,就可以像任何其他转换一样,正常地进行转换。使用转换方法来执行转换和调用停止方法释放所使用的转换资源。目前不支持从任何颜色空间到通用YUV的转换。
通用YUV转换目前有以下限制:
例子
使用通用YUV转换Y41P到RGB:
进口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,只使用UseBuiltIn
convParams。Method = ConversionMethodFlags。UseBuiltIn
确定要激活的转换类型。对于YUVGeneric,只能使用UseBuiltIn
convParams。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
结束函数
使用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,6
int[]抵消={1,3,5,7,8,9,10,11,0,4、2、6};
//初始化一个新的ConversionParameters类对象
ConversionParameters convParams =新ConversionParameters ();
//初始化YuvParameters类属性
ConversionYuvParameters = ConversionYuvParameters. empty;
//确定U
yuvParameters。Uh = 4;
//确定U
yuvParameters。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,只使用UseBuiltIn
convParams。Method = ConversionMethodFlags.UseBuiltIn;
//确定要激活的转换类型。对于YUVGeneric,只能使用UseBuiltIn
convParams。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;
}
使用通用YUV转换YVU9(平面)到RGB:
进口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
结束函数
使用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;
}