V4L2采集图像并在LCD上显示的图像格式问题

我使用Linux内核的开发板,用V4L2编写的图像采集程序,图像格式是mjpeg。但是我的LCD是16位的RGB,要把图像显示在LCD上,需要进行格式转换。貌似是需要先转换为RGB24,再转换为RGB16;谁做过类似的转换的,麻烦帮帮忙,给点代码。谢谢了都是什么回答哦!!
2026年09月25日 12:40
有2个网友回答
网友(1):

摄像头采集的视频数据是JPEG格式,需要通过libjpeg库进行解压,解压后得到的事RGB 24位的,在转换成RGB16位即可。 具体转换是将RGB24位的前8位右移3位,中间8位右移2位,最后8位右移3位,就得到RGB16位数据了。。。具体代码:
unsigned short RGB888toRGB565(unsigned char red, unsigned char green, unsigned char blue)
{
unsigned short B = (blue >> 3) & 0x001F;
unsigned short G = ((green >> 2) << 5) & 0x07E0;
unsigned short R = ((red >> 3) << 11) & 0xF800;
return (unsigned short) (R | G | B);
}

网友(2):

图3图像采集卡在采集数据时的工作时序
其中,VSYNV为场同步输出脉冲,HREF为也用于SRAM和FLASH的片选和读写控制,同时还负责LCD的显示控制。
2
软件设计