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的代码,应该都能够满足你的需求了。。。
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);
}