做ADNROID CAMERA时.发现很多朋友都在找YUV RGB 转换的函数..在这里给大家共享一个.可以实际工作的代码.YUV420P ---- >> RGB565
static void ccvt_420p_rgb565(int width, int height, const unsigned char *src, __u16 *dst)
{
int line, col, linewidth;
int y, u, v, yy, vr, ug, vg, ub;
int r, g, b;
const unsigned char *py, *pu, *pv;
linewidth = width >> 1;
py = src;
pu = py + (width * height);
pv = pu + (width * height) / 4;
y = *py++;
yy = y << 8;
u = *pu - 128;
ug = 88 * u;
ub = 454 * u;
v = *pv - 128;
vg = 183 * v;
vr = 359 * v;
for (line = 0; line < height; line++) {
for (col = 0; col < width; col++) {
r = (yy + vr) >> 8;
g = (yy - ug - vg) >> 8;
b = (yy + ub ) >> 8;
if (r < 0) r = 0;
if (r > 255) r = 255;
if (g < 0) g = 0;
if (g > 255) g = 255;
if (b < 0) b = 0;
if (b > 255) b = 255;
*dst++ = (((__u16)r>>3)<<11) | (((__u16)g>>2)<<5) | (((__u16)b>>3)<<0);
y = *py++;
yy = y << 8;
if (col & 1) {
pu++;
pv++;
u = *pu - 128;
ug = 88 * u;
ub = 454 * u;
v = *pv - 128;
vg = 183 * v;
vr = 359 * v;
}
} /* ..for col */
if ((line & 1) == 0) { // even line: rewind
pu -= linewidth;
pv -= linewidth;
}
} /* ..for line */
}
再给个YUV422 ---->>RGB565的..
#define YCbCrtoR(Y,Cb,Cr) (1000*Y + 1371*(Cr-128))/1000
#define YCbCrtoG(Y,Cb,Cr) (1000*Y - 336*(Cb-128) - 698*(Cr-128))/1000
#define YCbCrtoB(Y,Cb,Cr) (1000*Y + 1732*(Cb-128))/1000
#define min(x1, x2) (((x1)<(x2))?(x1):(x2))
__u32 Conv_YCbCr_Rgb(__u8 y0, __u8 y1, __u8 cb0, __u8 cr0)
{
// bit order is
// YCbCr = [Cr0 Y1 Cb0 Y0], RGB=[R1,G1,B1,R0,G0,B0].
int r0, g0, b0, r1, g1, b1;
__u16 rgb0, rgb1;
__u32 rgb;
#if 1 // 4 frames/s @192MHz, 12MHz ; 6 frames/s @450MHz, 12MHz
r0 = YCbCrtoR(y0, cb0, cr0);
g0 = YCbCrtoG(y0, cb0, cr0);
b0 = YCbCrtoB(y0, cb0, cr0);
r1 = YCbCrtoR(y1, cb0, cr0);
g1 = YCbCrtoG(y1, cb0, cr0);
b1 = YCbCrtoB(y1, cb0, cr0);
#endif
if (r0>255 ) r0 = 255;
if (r0<0) r0 = 0;
if (g0>255 ) g0 = 255;
if (g0<0) g0 = 0;
if (b0>255 ) b0 = 255;
if (b0<0) b0 = 0;
if (r1>255 ) r1 = 255;
if (r1<0) r1 = 0;
if (g1>255 ) g1 = 255;
if (g1<0) g1 = 0;
if (b1>255 ) b1 = 255;
if (b1<0) b1 = 0;
// 5:6:5 16bit format
rgb0 = (((__u16)r0>>3)<<11) | (((__u16)g0>>2)<<5) | (((__u16)b0>>3)<<0); //RGB565.
rgb1 = (((__u16)r1>>3)<<11) | (((__u16)g1>>2)<<5) | (((__u16)b1>>3)<<0); //RGB565.
rgb = (rgb1<<16) | rgb0;
return(rgb);
}
分享到:
相关推荐
将YUV420图像数据转换成RGB888和RGB565位图文件;包含YUV420解码算法;YUV数据到RGB数据的转换算法;生成RGB888位图和RGB565位图的BITMAP文件格式算法;相关算法与函数都有详细的注释信息。
改用原始图像数据流回调函数RegisterImageStreamCallback进行抓图 但回调函数帧为YUV420格式 需要转成Bitmap才用用于显示及本地查看 在网上找了好多都是基于R Y+1 4075 V 128 G Y 0 3455 U 128 – 0 7169 V 128 B Y+...
yuv转rgb函数,rgb转yuv函数,内部做了封装处理,main函数调用;
(1) 分离出 RGB 三个分量,再从 RGB 分别转换成 YIQ,YUV、YCrCb 的各个分量。 (2) 分别计算 YIQ,YUV、YCrCb 颜色空间内三个分量图像(亮度分量、两个色度分量)之间 的相关系数、每个分量图像的熵。 (3) 将 YIQ,YUV...
嵌入式系统开发经常需要将输出的YUV422数据转为RGB格式数据,这是一个很好的转换函数。
里面有yuv和rgb转换的函数可以调用,很方便
将图像格式RGB24转换为YUV格式,内有详细的函数
函数 rgb2yuv 将图像的 RGB 矩阵转换为图像的 YUV 格式矩阵。 如果 Plot Flag 等于 1,它会绘制图像。 它使用维基百科中提供的 RGB 转换公式。 它以 4:2:2 色度采样提供 YUV 格式例子file=('<图像文件路径>'); ...
(1)进行颜色转换,将RGB格式转换为YUV格式。 (2)将待编码的N×N的图像分解成(N/8)^ 2 个大小为8×8的子图像。 (3)对每个子图像进行DCT变换,得到各子图像的变换系数。这一步的实质是把空间域表示的图像转换成...
这两个函数用于将RGB彩色图像转换为YUV格式或将YUV格式转换为RGB彩色图像……这两个函数广泛用于图像处理和图像压缩技术
离屏(或覆盖)面的像素格式为RGB格式,彩色空间YUV到RGB的转换由cscc.lib完成(以后会改为直接使用YUV格式显示)。 尚未使用任何D3D或DirectShow的函数,DDraw版本为Directx 7。 每帧之间的定时采用...
在yuvshow.m设定输入文件和参数,调用子函数处理yuv文件,转化为RGB,并播放。
LAB转换需要tensorflow_io Colorspace2RGB函数需要张量(yuv / lab2rgb也可以采用NumPy数组),而RGB2Colorspace函数可以采用NumPy数组或Tensors。 所有函数都返回一个NumPy数组。 用法: rgb2cs,cs2rgb = get_...
职能: divide_seq - 将 YUV 序列分成段mm_seq - 将视频文件转换为原始 YCbCr 格式read_floatframe - 读取并显示存储为浮点数流的帧值rgb2yuv - 将 RGB 转换为 YUV save_yuvframe - 将选定的帧从 yuv 序列保存到...
C和SSE优化代码将RGB转换为NV12色彩空间。 NV12格式定义: NV12格式是YUV 4:2:0格式,其在内存中的顺序是第一个Y平面,然后是在交错的UV平面中压缩的色度样本。 例子: YYYYYY YYYYYY 紫外线 RGB颜色格式,指的是...
一款真正全能空间转换代码!畅想颜色自由转换!支持以下类型! RGB' = sRGB IEC 61966-2-1 'YPbPr' = Luma (ITU-R BT.601) + Chroma 'YCbCr' = Luma + Chroma 'JPEG-YCbCr' = space used in JPEG 'YUV' = NTSC ...
附件提供bmp格式或rgb24格式转换成NV12或NV21格式的函数,纯C代码,并附有测试用例和测试用的bmp文件,提供makefile,可直接编译成X86和ARM平台的可执行文件。
4)RGB to YUV文件转换①流程分析程序初始化(打开两个文件、定义变量和缓冲区等)读取RGB文件,抽取RGB数据写入缓冲区调用RGB2YUV的函数实现RG
该软件包可在 sRGB、Y'PbPr、Y'CbCr、JPEG-Y'CbCr、Y'UV、Y'IQ、Y'DbDr、HSV、HSL、HSI、CIE XYZ、CIE L*a*b*( CIE... B = colorspace(S,A) 转换图像 A 的颜色表示,其中 S 是指定转换的字符串。 S 告诉源和目标颜色
cv2.cvtColor函数封装了各种颜色空间之间的转换,唯独没有RGB与HSI之间的转换,网上查来查去也只有C++或MATLAB版本的,自己要用到python里,所以就写写python版本的。 HSI颜色模型是一个满足计算机数字化颜色管理...