(1)RGB565格式说明

RGB565彩色模式, 一个像素占两个字节,
其中:第一个字节的前5位用来表示R(Red),第一个字节的后三位+第二个字节的前三位用来表示G(Green),第二个字节的后5位用来表示B(Blue)。如:15 14 13 121110 9 8 , 7 6 5 4 3 2 1 0

而bitmap图片是一个RGB888,每个像素由3个字节组成,R->8bit,G->8bit,B->8bit;RGB565
的每个pixels是由2字节组成,R->5bit,G->6bit,B->5bit。转换的思路是取出原图的点,对每个采样进行运算。

(2)互转程序

#define RGB565_MASK_RED        0xF800  
#define
RGB565_MASK_GREEN    0x07E0  
#define
RGB565_MASK_BLUE       0x001F  
void rgb565_2_rgb24(BYTE *rgb24, WORD
rgb565)    //把一个字的565数据转成3个分离的R ,G,B
{   
      //extract RGB  
//分离出单独的RGB
      rgb24[2] = (rgb565 & RGB565_MASK_RED) >> 11;

rgb24[1] = (rgb565 & RGB565_MASK_GREEN) >> 5;  
     
rgb24[0] = (rgb565 & RGB565_MASK_BLUE);

//amplify the
image   //往高位移动填满单字节的8位
      rgb24[2] <<= 3;  
      rgb24[1]
<<= 2;  
      rgb24[0] <<= 3;  
}

USHORT rgb24_2_rgb565(int r, int g, int b)   //应该会损失数据内容
{
       
return (USHORT)(((unsigned(r) << 8) & 0xF800) |
           
((unsigned(g) << 3) & 0x7E0)  |
            ((unsigned(b) >>
3)));
}

(3)显式彩条测试画面

如果在一个240X400分辨率的LCD屏幕上,设置三条竖彩带,分别是红绿蓝,以测试画面效果。程序如下:

void MainAddressSetting()
{
      U16 xx,yy;
     
CpuMainWriteCom(0x0210);CpuMainWriteData(0x0000);    //X位置起始点
     
CpuMainWriteCom(0x0211);CpuMainWriteData(0x00ef);     //X位置终结点
     
CpuMainWriteCom(0x0212);CpuMainWriteData(0x0000);    //Y位置起始点
     
CpuMainWriteCom(0x0213);CpuMainWriteData(0x018f);     //Y位置终结点
     
CpuMainWriteCom(0x0200);CpuMainWriteData(0x0000);
     
CpuMainWriteCom(0x0201);CpuMainWriteData(0x0000);    //GRAM ADDR SET

CpuMainWriteCom(0x0202);                                                 //GRAM
WRITE START
      for(yy=0;yy<400;yy++)
      {
          
for(xx=0;xx<80;xx++)                                
//xx应该只是表示点的个数,并不意味地址
                 CpuMainWriteData(0xf800)
          
for(xx=0;xx<80;xx++)
                
CpuMainWriteData(0x7e0)
          
for(xx=0;xx<80;xx++)
                 CpuMainWriteData(0x001f)
     
}
}

RGB565 RGB888相关推荐

  1. RGB565 与 RGB888的相互转换

    本文内容不是完全原创,参考了网上部分精华,做了整理. RGB色彩模式(也翻译为"红绿蓝",比较少用)是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B) 三个颜色通道的变化 ...

  2. libjpeg库的简单使用,rgb565与rgb888互转,以及色块的寻找

    最近用的摄像头OV2640摄像头,支持RGB565.JPEG.YUV和YCbCr格式的输出,想要对采集的图像进行色块识别,这样一般需要用到RGB格式的输出会比较好处理,数字图像处理中常用的采用模型是R ...

  3. 视频处理单元Video Processing Unit

    视频处理单元Video Processing Unit VPU处理全局视频处理,它包括时钟门.块复位线和电源域的管理. 缺少什么: •完全重置整个视频处理硬件块 •VPU时钟的缩放和设置 •总线时钟门 ...

  4. Nexys4DDR+OV7670实现图像灰度显示系统

    在这里分享设计: 通过之前发布的实验中,已经实现Nexys4DDR+OV7670实时视频采集系统,在此基础上进行灰度处理并显示. 硬件环境:Nexys4 DDR 软件环境:vivado 2018 编程 ...

  5. 第二季1:图像基础知识

    以下内容源于朱有鹏嵌入式课程的学习整理,如有侵权,请告知删除. 1.颜色 (1)颜色的三个关键:亮度(亮暗程度).色度(什么颜色).饱和度(厚浅感). (2)颜色的数字化描述:色彩空间(如RGB,YU ...

  6. FFmpeg总结(一)FFmpeg官方文档分块

    FFmpeg总结(一)FFmpeg官方文档分块 转载:http://blog.csdn.net/hejjunlin/article/details/68483899 http://ffmpeg.org ...

  7. STM32 BMP图片解析

    重新优化了bmp图片解析,这次主要针对有大容量RAM的STM32F4以及F7,使用的是文件加载到内存后解析,并将解析后的RGB数据存储到另外一块内存区域,支持16位(RGB555),24位(RGB88 ...

  8. 【第3版emWin教程】第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口)

    教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第8章   emWin6.x的带OS方式移植(STM32H7之R ...

  9. ST7701芯片820*320屏幕移植stemwin

    简要说明 如题,公司最近更换820*320屏幕,移植stemwin,使用3线spi通讯+16RGB,这屏幕工作流程为:首先通过3线spi发送初始化指令,之后通过16bitRGB发送像素点. 移植过程参 ...

最新文章

  1. 一笔画 (25 分)
  2. ann人工神经网络_深度学习-人工神经网络(ANN)
  3. 硬件:RS232、RS422和RS485的区别
  4. python input sys.stdin
  5. 从 Google 的一道面试题说起·
  6. Js之History对象
  7. 四元数与欧拉角之间的换算关系
  8. mysql sql 按天分组统计_Mysql按日、周、月进行分组统计
  9. 基于PaddleOCR开发uni-app离线身份证识别插件
  10. 常规设置-Sinon.JS
  11. 文字翻译软件哪个好用?亲测好用的软件分享
  12. VS用OLE方式对Excel进行读写操作
  13. 怎样选择适合您的EDI供应商?
  14. golang设计模式——策略模式
  15. 3年Java后端开发面试题总结
  16. p什么水管_pvc管规格-P是什么意思pvc给水管规格中T?pvc给 – 手机爱问
  17. 联想服务器显示屏显示HDD2,UCS C系列安置服务器排除的HDD问题故障CLI命令
  18. day29 HTML基础
  19. 2021-520-日记
  20. 中国门诊动态软件市场深度研究分析报告

热门文章

  1. java回溯算法解决数独_js回溯算法解决数独问题
  2. 02 MSC类设备-基础篇(二)
  3. Eclipse插件列表
  4. windows安装Pillow报错找不到zlib
  5. nextTick介绍
  6. NoSQL数据库的基础知识
  7. Jetson TX2 tensorflow安装+keras安装
  8. python判断汉字偏胖_python实现在线分词
  9. C++ 双指针汇总(快慢指针, 滑动窗口, 前后指针,左右指针)
  10. 绘图工具-PlantUML