摄像头采集QT5显示和分辨率适配
来源:互联网 发布:网络信息时代 编辑:程序博客网 时间:2024/05/20 21:05
前言
随着嵌入式行业的发展,ARM平台上对视频的采集和显示越来越普遍,本文主要讲解使用QT5在LCD屏上实时显示摄像头采集的数据,主要分为两个部分:摄像头的数据采集、QT的刷新显示。
一、摄像头的数据采集
对于摄像头的数据采集,首先你必须的有驱动,无论是usb摄像头,还是模块摄像头,这个这里就不多说,这里主要讲解使用v4l2对视频的采集,V4L2(Video For Linux Two)是内核提供给应用程序访问音、视频驱动的统一接口,使用V4L2怎么采集到一帧数据的网上资料很多,当然如果你找不到,也可以去下载:
http://download.csdn.net/detail/u012478275/9517727
当你采集到一帧数据:unsigned char *yuyv= (unsigned char *)(cap_buffers[v4l2_buf.index].start);这时候需要对采集数据转换成RGB,一般摄像头输出YUYV(yuv422)和NV12(yuv420),对于YUYV和NV12格式转RGB的代码可以下载:
http://download.csdn.net/detail/u012478275/9517863
这样前期的采集基本完成了,把转化后的rgb格式在QT中刷新显示出来就可以了。
二、QT刷新在LCD中的显示
对于QT刷新显示,你的去建立一个线程,把采集的视频数据不断刷新到lable进行显示,线程的主要程序如下:
while(!quit_flag)
{
m_video.get_data();//获取视频数据
unsigned char *rgb;
rgb = new unsigned char [m_video.buf.length*2];//根据yuyv像素点和rgb像素所站内存比分配rgb
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 &)));
这里label的刷新显示,如果你摄像头采集的分辨率和你的LCD屏大小不同,例如,摄像头采集的分辨率是640X480,但你现在的LCD屏是800X480的,这时候如果你需要显示全屏,你需要的让lable自动伸缩:void MainWindow::show_picture(const QImage &img){ui->show_label->setPixmap(QPixmap::fromImage(img));}
ui->show_label->setScaledContents(true);
ui->show_label->setFixedSize(800,480);
无论你摄像头是什么样的分辨率,用这个就可以实现全屏了。
0 0
- 摄像头采集QT5显示和分辨率适配
- 视频采集显示分辨率
- 摄像头采集,framebuffer显示
- openCV2.4.9与QT5.5.1结合打开摄像头并显示采集到的图像的问题
- qt5 采集摄像头的视音频
- OpenCV摄像头采集分辨率设置问题
- Qt5.3里使用OpenCV库采集摄像头图像保存为图片和视频
- VS2013+QT5+opencv3.1显示摄像头
- Linux 下摄像头视频采集与显示
- Linux 下摄像头视频采集与显示
- Linux 下摄像头视频采集与显示
- DM8148 摄像头采集 显示 识别测试 一
- DM8148 摄像头采集 显示 识别测试 二
- DM8148 摄像头采集 显示 识别测试 三
- DM8148 摄像头采集 显示 识别测试 四
- Linux 下摄像头视频采集与显示
- USB摄像头图片采集+QT显示(二)
- Linux 下摄像头视频采集与显示
- vs 获取当前程序文件的路径方法
- hdu2188——悼念512汶川大地震遇难同胞——选拔志愿者(巴什博奕)
- error: could not create '/Library/Python/2.7/site-packages/jedi': Permission denied
- Android+Servlet+MySQL实现仿兼职地带app
- Struts2处理流程性需求的一种解决方案
- 摄像头采集QT5显示和分辨率适配
- Swift设计模式之迭代器模式
- Jetty实战之 嵌入式Jetty运行Servlet
- linux shell 提取变量 变量传参
- java多线程(一)线程状态与创建线程
- Swift设计模式之单例模式
- linux中Framebuffer的原理及实现机制
- 保底抽奖程序的简单实现
- Android五种数据传递方法汇总