RGB565 怎么转 RGB888

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RGB565 怎么转 RGB888相关的知识,希望对你有一定的参考价值。

RGB565的意思是在16位整型数中,低5位对应蓝色的高5位,高5位对应红的高5位,中间6位对应绿的高6位
要变成RGB888,那么用连续的三个字节分别存放红绿蓝三个8位数
可以这么转换:
unsigned short int uRGB565=0x1234; //随便取的一个颜色值
unsigned char RGB888[3];
RGB888[0]=(uRGB565>>8)&0x0f8; //转换最高5位成8位红色的高5位
RGB888[1]=(uRGB565>>3)&0x0fc; //转换中间6位成8位绿色的高6位
RGB888[2]=(uRGB565<<3)&0x0f8; //转换低5位成8位蓝色的高5位
在转换时,8位颜色值的低位不足部分是取成了0值,也可以取成全1值,这样最亮的颜色不会变,方法是:RGB888[0]|=7; RGB888[1]|=3; RGB888[2]|=7;
参考技术A 会不会是添加了“图层蒙版”、。。 →你在“图层”面板上看
还有会不会“模式”由“正常”改成“明度”了,
(一般不会这样的,你再新建张纸试试)
不明白可以再问我

灰度转换:RGB转YCbCr转Gray

  YCbCr

一、YCbCr介绍

二、MATLAB实现

简单

 1 clc;
 2 clear all;
 3 RGB = imread(flower.bmp); %读取图像
 4 
 5 R = RGB(:,:,1);             %R分量
 6 G = RGB(:,:,2);             %G分量
 7 B = RGB(:,:,3);             %B分量
 8 
 9 [ROW,COL,N] = size(RGB);    %获得图像尺寸[高度,长度,维度]
10 for i = 1:ROW 
11     for j = 1:COL
12         Y(i,j)  =  0.299*R(i,j) + 0.587*G(i,j) + 0.114*B(i,j);
13         Cb(i,j) = -0.172*R(i,j) - 0.339*G(i,j) + 0.511*B(i,j) + 128;
14         Cr(i,j) =  0.511*R(i,j) - 0.428*G(i,j) - 0.083*B(i,j) + 128;
15     end
16 end 
17 
18 subplot(2,2,1);imshow(R);title(R分量灰度图);
19 subplot(2,2,2);imshow(G);title(G分量灰度图);
20 subplot(2,2,3);imshow(B);title(B分量灰度图);
21 subplot(2,2,4);imshow(Y);title(Y分量灰度图);

效果如下:

技术图片

三、FPGA实现

1、公式改写

2、流水线思想

3、Y分量赋值

 

四、上板验证

如图:

 

五、后记

  后续用Y分量进行图像处理即可

 

以上是关于RGB565 怎么转 RGB888的主要内容,如果未能解决你的问题,请参考以下文章

RGB888 到 RGB565 / 位移

一文了解各平台RGB565和RGB888区别

RGB888与RGB565互相转换原理

RGB888转换为RGB565格式

使用 SSE2 优化 RGB565 到 RGB888 的转换

android rgb888和argb565有啥区别