本书第253页问题 如上图所示,这三行是RGB565转成RGB888格式的代码。 【RGB565的定义】 din是16位位宽的数据,表示的是RGB565的值,其中din[15:11]表示的是RED;din[10:5]表示的是GREEN;din[4:0]表示的是BLUE。 其根据,可以参考OV7670摄像头的数据手册,关于图像传输时序那一节内容。 【RGB888如何转成RGB565】 RGB888是指分别使用8位来表示R、G、B分量。一般情况下分别取其高位来转成RGB565, 这样做就相当于保留了细节信息(高频成份),丢失了一些背景(低位表示背景,变化不大的内容)。 【RGB565如何转成RGB888】 我们获取到的RGB565,要转成RGB888,一般是RGB888转成RGB565的逆过程。 但注意的是,RGB888转成给RGB565丢弃掉的数据,是已经找不回来的。 所以RGB565转成RGB888的低位数据,只能按设计者的意图补回来。例如可以全补0(补黑色); 也可以全补1(补白色);还可以补已有数据的低位,如本例中RED分量,补的是低位din[13:11], 其本意是低位尽可能接近原来的颜色(有没有用,取决地环境)。 本书采用的是补原来数据的低位,很随意的一个设计,没有过多地考虑,读者不必过多地解读。 |