USB摄像头视频采集及QT界面显示.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word文档整理分享 参考资料 USB摄像头视频采集与Qt界面显示 Qt界面制作 新建Qt工程 启动Qt Creator,新建一个Qt Gui应用。 单击File选择New File or Project出现以下界面: 选择Qt Gui Application,之后选择好工程与路径名,其他默认,一直到设置Class information(类信息)时,Class name设为Widget, Base name选择QWidget,其他默认。设置好这些后,其他默认,直到工程设置结束。如下图所示: 2. 修改ui界面 打开Widget.ui,进入可视化设计界面。默认情况中间的主设计区下只有一个Widget的对象。由于USB摄像头采集到的图像需要显示到一个QLabel的部件上,从右侧的部件列表的“DisplayWidget”中选择“Label”部件拖动到中间;此外,我们需要两个按钮,一个用于启动和终止视频数据的保存,一个用于以后的视频文件的压缩。从右侧的”Buttons”中两次选择”Push Buttion”部件并拖动到Widget中。 从上图可以看出,对象Widget下已经添加了一个label部件,两个push button部件。右上角Object与Class的关系是:Object对应的物体是属于Class对应的类,反映了Qt的继承关系。 接下来设置上面四种部件的属性,Widget的属性按照下面图示设置,其中geometry设置为[(0,0),650*550]说明界面左上角的坐标位于原点,大小为650*550;在window name这一项设置的是你的界面的名字,我设置为USB_YUV_Camera。 注:图片未提及的采用默认就行,其他三个部件见图示。这些部件的objectName要特别注意,因为会在后面编写的程序中用到。 (Widget设置图示) (label设置图示1) (label设置图示2) (Push button 1设置图示) (Push button 1设置图示) (Push button 2设置图示) Push button 2设置图示) 最后生成的界面: 点击Debug会得到Debug文档,里面有你设置的信息。 编译运行后,会在建立的工程文件夹下生成很多文件,重要的是widget.ui文件,其他的文件要根据你具体的应用作出相应的修改。 Qt界面最终的效果图为: USB摄像头视频采集与Qt界面显示源代码分析 源码包含:common.h VideoDevice.h widget.h VideoDevice.cpp widget.cpp main.cpp common.h主要定义了USB采集到的图像的宽度,高度等信息; Videodevice.h定义了VideoDevice类,使它继承于Qt的基类QObject,定义了VideoDevice的构造函数与析构函数,重要的是定义了实现V4L2视频架构的函数; Videodevice.cpp具体实现了Videodevice.h定义的函数,完成了基于V4L2架构的视频采集; widget.h定义了Widget窗口类,使它继承于Qt窗口类QWidget,并定义了YUV到RGB颜色转变的函数;QT界面按钮操作的实现函数,以及视频窗口的刷新时间painEvent函数; widget.cpp实现了widget.h定义的函数。 下面介绍各文件的主要代码段: (1)common.h #ifndef COMMON_H #define COMMON_H //… … #define IMG_WIDTH 640//定义视频的宽度为640 #define IMG_HEIGTH 480//定义视频的高度为480 #endif // COMMON_H (2) Videodevice.h #define CLEAR(x) memset((x), 0, sizeof(x))//定义CLEAR为内存清零 class VideoDevice : public QObject { Q_OBJECT //有了这条语句才能使用QT中的signal和slot机制 public: VideoDevice(QString dev_name);//构造函数定义,用于初始化 ~VideoDevice();//析构函数用于释放内存 int get_frame(unsigned char ** yuv_buffer_pointer, size_t* len);//获取视频帧 int unget_fra

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档