在LCD显示摄像头图像

本文介绍了如何在LCD上显示摄像头图像,通过V4L2框架读取数据,然后进行YUV、MJPEG等格式到RGB的转换,适应LCD只支持RGB格式的需求。同时,涉及分辨率转换,并使用面向对象思想设计应用程序,包括读取、转换和显示三个步骤的结构体抽象。文章还详细讲解了代码实现,包括结构体注册、摄像头启动、数据格式转化、图像缩放及数据刷屏到LCD显存的过程。
摘要由CSDN通过智能技术生成

框架

我们将从摄像头读到数据在LCD上显示,首先将摄像头数据读出到一块内存上,然后设置好LCD控制器从这块内存读取数据到LCD显示屏上,对于摄像头数据格式来说有YUV,MJPEG,RGB,而我们的LCD只支持RGB格式的数据格式,所以这里面还要将读取到的摄像头头数据进行一数据格式的转化,除了数据格式的转换外还需要分辨率的转化,如下图所示流程:
在这里插入图片描述
我们以面向对象的思路来写这个应用程序,首先抽象出对象的结构体,对于读过程我们可以抽象出如下结构体
用V4L2框架读取摄像头图像

struct VideoDevice {
   
    int iFd;
    int iPixelFormat;
    int iWidth;
    int iHeight;

    int iVideoBufCnt;
    int iVideoBufMaxLen;
    int iVideoBufCurIndex;
    unsigned char *pucVideBuf[NB_BUFFER];

    /* 函数 */
    PT_VideoOpr ptOPr;
};
/*视频数据缓冲区*/
typedef struct VideoBuf {
   
    T_PixelDatas tPixelDatas;//视频数据的参数
    int iPixelFormat;//视频数据格式
}T_VideoBuf, *PT_VideoBuf;

struct VideoOpr {
   
    char *name;/*设备名字*/
    int (*InitD
  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值