读书人

24位图像数据在16位显示屏下显示的有关

发布时间: 2012-10-15 09:45:24 作者: rapoo

24位图像数据在16位显示屏上显示的问题
基于ARM2410,摄像头设置参数为VIDEO_PALETTE_RGB24采集图片信息通过
imageptr=(unsigned short *)get_frame_address(&vd);
图像数据信息地址保存在imageptr中,
可是显示屏只能显示16位的图片。
从网上查了一些东西要24位转成16位,我于是修改了代码,可是还是不能显示。请大家指教。

[解决办法]
采集的是RGB24格式的,显示的是16位的,但要确定格式(灰度图还是RGB或者YUV格式?)确定后再按相应的转换公式转换
[解决办法]
这是我项目里最近用到的,是C#的代码,不过应该很容易转成你想要的吧。而且我这里是从现在最最常用的
32位ARGB(8888)转 555RGB 和565RGB的代码,应该都能够满足你的需求了。。。


C# code
 public static ushort _32Argb_to_555(Color clr)        {            int color = clr.ToArgb();            return (ushort)((color >> 3) & 0x7C00 |                (color >> 10) & 0x03E0 |                (color >> 19) & 0x001F);        }        public static ushort _32Argb_to_565(Color clr)        {             int color= clr.ToArgb();            return (ushort)((color >> 3) & 0xF800 |                (color >> 10) & 0x07E0 |                (color >> 19) & 0x001F);        } 

读书人网 >图形图像

热点推荐