新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2018-1-24
- 在线时间
- 4 小时
|
1金钱
本帖最后由 QMXi 于 2018-1-25 13:54 编辑
我用的是stm32f407加OV2640,120x160的图像,如图所示,公式是按照网上查的公式写的,R,G,B三色提取后显示的都是蓝色,合成灰度后也显示的是蓝色,哪位大神知道是公式的原因还是其他的原因?
u32 RGB_BUF[Width][High];
u32 RGB_BUF[Width][High];
u32 R,G,B;
void RGB_data_process(void)
{
u16 i,j;
for(i=0;i<Width;i++)
for(j=0;j<High;j++)
{
LCD_SetCursor(j,i);
LCD_WriteRAM_Prepare();
R = (RGB_BUF[j] & 0x00FF0000) >> 16;
G = (RGB_BUF[j] & 0x0000FF00) >> 8;
B = (RGB_BUF[j] & 0x000000FF) >> 0;
LCD->LCD_RAM = ( R*38 + G * 75 + B * 15 )>>7;
}
}
这是部分程序,灰度转换后显示出来的是蓝色的,难道是公式的问题?这个是在网上搜的一个公式,RGB565应该是16位图像,为什么定义时是u32类型?(u32 RGB_BUF[Width][High]),按照道理应该是16位,分别右移5位,11位才对
|
-
正常显示图像程序
-
RGB565转灰度程序
|