2019-07-20 09:50发布
li1207519730 发表于 2016-7-16 19:06 16是随便设的,3,4,8,16,32,随便找个值用RGB565测试,都能转化为灰度图像输出到LCD上,这点我也很纳闷儿 ...
phoenix 发表于 2016-7-9 10:47 先得让OV2640输出YUV422格式数据
最多设置5个标签!
//DCMI DMA配置
//memaddr:存储器地址 将要存储摄像头数据的内存地址(也可以是外设地址)
//memsize:存储器长度 0~65535
//memblen:存储器位宽 0,8位,1,16位,2,32位
//meminc:存储器增长方式,0,不增长;1,增长
void DCMI_DMA_Init(u32 memaddr,u16 memsize,u8 memblen,u8 meminc)
【1】 16是随便设的,3,4,8,16,32,随便找个值用RGB565测试,都能转化为灰度图像输出到LCD上,这点我也很纳闷儿,而且这个数据传输量到底指的是什么
这个"数据传输量"是:存储器长度
【2】 一个数据项所含的位数到底取决于什么我也一直搞不懂
取决于:存储器位宽,比如,LCD的显存位宽为16位,探索者外部SRAM位宽为:16位
有个小问题,就是二值化后的图形有“噪点”,有点像光线影响的,照全白纸张时周边有些许黑 {MOD},用手机在附近打闪光灯,黑 {MOD}噪点就消失,能不能通过程序进行优化消除噪点呢?
这个是按照你的方法输出的YUV422图像,向纹波一样
下面这个是按照你给的公式得出的灰度图像
怎么感觉图像是花的,难道是我弄错了,下面是我的代码
u32 RGB_BUF[Width][High];
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();
Gray =(((RGB_BUF[j]>>(8+3))<<11)|((RGB_BUF[j]>>(8+2))<<5)|((RGB_BUF[j]>>(8+3))<<0));
LCD->LCD_RAM = RGB_BUF[j];
}
}
void OV2640_YUV422_Mode(void)
{
//éèÖÃ:YUV422¸ñê½
SCCB_WR_Reg(0xFF, 0x00);//éèÖÃ:YUV422êä3ö
SCCB_WR_Reg(0xDA, 0x01);//YUV422.YVYU
}
DCMI_DMA_Init((u32)&RGB_BUF,RGB_BUF_Size,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Enable);
一周热门 更多>