飞思卡尔 I.MX6Q-摄像头采集QT5显示和分辨率适配

专栏说明

        本专栏针对飞思卡尔I.MX6Q芯片产品开发,主要为视频的采集(V4L2)、视频编解码(VPU)、视频格式转化(IPU)、H264封装为MP4、QT5的移植和显示。

        飞思卡尔I.MX6Q-LTIB安装配置

        飞思卡尔 I.MX6Q-vpu视频编解码

        飞思卡尔 I.MX6Q-ipu视频流格式转换

        飞思卡尔 I.MX6Q-封装H246为MP4

        飞思卡尔 I.MX6Q-高分辨率(1080P)视频采集编码

        飞思卡尔I.MX6Q-QT5的移植

        飞思卡尔 I.MX6Q-摄像头采集QT5显示和分辨率适配

前言

        随着嵌入式行业的发展,ARM平台上对视频的采集和显示越来越普遍,本文主要讲解使用QT5在LCD屏上实时显示摄像头采集的数据,主要分为两个部分:摄像头的数据采集、QT的刷新显示。

一、摄像头的数据采集

   对于摄像头的数据采集,首先你必须的有驱动,无论是usb摄像头,还是模块摄像头,这个这里就不多说,这里主要讲解使用v4l2对视频的采集,V4L2(Video For Linux Two)是内核提供给应用程序访问音、视频驱动的统一接口,使用V4L2怎么采集到一帧数据的网上资料很多,当然如果你找不到,也可以去下载:linux下v4l2视频采集_v4l2音频-C代码类资源-CSDN下载

当你采集到一帧数据:unsigned char *yuyv= (unsigned char *)(cap_buffers[v4l2_buf.index].start);这时候需要对采集数据转换成RGB,一般摄像头输出YUYV(yuv422)和NV12(yuv420),对于YUYV和NV12格式转RGB的代码可以下载

使用代码软件转化:yuyv(yuv422)和nv12(yuv420)转RGB代码

使用硬件IPU转化:IMX6Q-ipu格式转化例子

这样前期的采集基本完成了,把转化后的rgb格式在QT中刷新显示出来就可以了。

二、QT刷新在LCD中的显示

    对于QT刷新显示,你得去建立一个线程,把采集的视频数据不断刷新到lable进行显示,线程的主要程序如下:

  while(!quit_flag)
    {
        m_video.get_data();//获取视频数据
        unsigned char *rgb;
        //根据yuyv像素点和rgb像素所站内存比分配rgb
        rgb = new unsigned char [m_video.buf.length*2];
        m_video.yuvtorgbO(rgb,640,480);//yuyv转换成RGB
        QImage img = QImage(rgb,640,480,QImage::Format_RGB888);
        emit image_data(img);//发信号到lable显示界面
        msleep(40);
        delete[] rgb;//不能在sleep前释放掉否则显示的图片会出现问题
    }

    对于显示界面,主要代码如下:

connect(video,SIGNAL(image_data(const QImage &)),this,
SLOT(show_picture(const QImage &)));

void MainWindow::show_picture(const QImage &img)
{
    ui->show_label->setPixmap(QPixmap::fromImage(img));
}

 这里label的刷新显示,如果你摄像头采集的分辨率和你的LCD屏大小不同,例如,摄像头采集的分辨率是640X480,但你现在的LCD屏是800X480的,这时候如果你需要显示全屏,你需要的让lable自动伸缩: 

ui->show_label->setScaledContents(true);
ui->show_label->setFixedSize(800,480);

无论你摄像头是什么样的分辨率,用这个就可以实现全屏了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProYuan28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值