基于q的视频记录系统设计与实现_第1页
基于q的视频记录系统设计与实现_第2页
基于q的视频记录系统设计与实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于q的视频记录系统设计与实现

pald图像记录系统方案设计随着信息技术的快速发展,视频录音系统在交通监控、数字摄影、机器人视觉、军事国防等领域具有广阔的发展前景。本文的视频记录系统,用于记录飞行器的运动轨迹,采集存储飞行器运动过程中所需的飞行数据,当飞行器落地后,读取并分析存储数据,将数据还原成图像及视频,以供研究利用。本文针对这一视频记录系统开发应用程序,结合TCP/IP协议,实现通过网口读取视频记录系统摄像头采集到的数据,将数据转换为PAL_D制式图像实时显示在图形用户界面窗体上,并保存成AVI视频文件。并且根据实际应用情况,实现帧率可调的、用于播放视频流数据的视频播放器功能。1图形用户界面设计视频记录系统的硬件和软件结构如图1所示。硬件主要由五部分组成:一是摄像头,负责采集原始视频流数据;二是AD采集芯片,负责将模拟视频信号转为数字视频信号;三是FPGA芯片,负责数字视频信号的存储转发;四是存储,负责图像数据的存储;五是网络芯片,负责上传图像数据。软件部分是在Windows系统采用Qt软件开发的图形用户界面应用程序。本文将着重阐述该应用程序2应用程序的关键技术本文应用程序以OpenCV库和QT库为核心,负责处理视频数据与图像显示。2.1cos操作系统OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV可以与英特尔公司所开发的图形处理库IPL兼容,所以它能够高效而充分地运行在Intel处理器上,主要用于对图像进行高级处理,例如特征检测与跟踪、运动分析3D重建、结构分析、物体跟踪、模式识别等。2.2基于pp的高效工具QT是跨平台的C++图形用户界面工具。由于QT采用面向对象开发,具有跨多平台、界面设计美观等特点,因此得到广泛应用。QtCreator是一个用于Qt开发的轻量级跨平台集成开发环境,包含了一套用于创建和测试基于Qt应用程序的高效工具。QtCreator能够跨平台运行,支持的系统包括Linux、MacOSX以及Windows,它可以使开发人员能够利用Qt这个应用程序框架更加快速及轻易地完成开发任务。本文应用程序在Windows平台下使用QtCreator进行开发。Qt的核心机制是信号和槽机制,是完成任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是等同于接收并处理信号的函数。每个Qt对象都包含若干个预定义的信号和若干个预定义的槽,当某个特定事件发生时,一个信号被发送,与信号相关联的槽则会响应信号并完成响应的处理3应用方案来执行3.1网络数据处理本应用程序主线程承担用户交互的重任,为了提高程序的响应速度,防止界面冻结而影响用户的正常操作,采用Qt多线程设计,子线程负责TCP/IP网络数据传输和视频数据处理,主线程负责用户操作、图像显示及视频文件保存。在Qt应用程序中QThread类提供了创建一个新线程的方法,新建一个线程,只需继承QThread类并重写它的run()函数,当调用start()函数时就会调用重载的run()函数。本应用程序中,子线程用于通过TCP/IP网络周期性获取单帧图像数据,并将接收到的图像数据进行视频数据转换,通过emit发送图像到主线程进行界面显示和AVI视频文件保存。3.2qpt适应cp使用本应用程序采用TCP协议实现Socket通信。TCP是一种可靠的、面向连接、面向数据流的传输协议,为应用程序提供可靠的通信连接,从而确保视频数据的有效传输。TCP协议的程序使用的是客户端/服务器模式,在Qt中提供了QTcpSocket类来编写客户端程序,使用QTcpServer类编写服务器端程序。在本应用程序中,采用QTcpSocket类实现客户端程序的编写。QTcpSocket通过器父类QAbstractSocket继承了QIODevice,因此它可以通过使用QTextStream和QDataStream来进行读取和写入,使用起来非常方便。QTcpSocket类因为继承自QAbstractSocket,所以如果不采取一些措施的话,就处于非阻塞方式,而它的好处就是可以在一个线程中实现多路tcp连接。本应用中需要命令和数据两路tcp连接,所以适合采用QTcpSocket类。在数据传输过程中采用waitForReadyRead()函数来实现网络的阻塞处理。3.3图像背景转换视频格式转换关键代码:根据视频记录系统的实际应用情况,摄像头采集到的图像为8位的灰度图像,图像存储将8位灰度图像转化成Colormap,Qt中仅有按照索引的8位位图,还需要添加ColorTable颜色表。QImage中定义ColorTable的原型为:voidQImage::setColorTable(constQVector<QRgb>colors),因为灰度值分别对应RGB相同的分布,因此颜色表ColorTable取vector(0-255)对应为qRGB(i,i,i),i在0~255之间。采用OpenCV将灰度图像保存成AVI视频文件,OpenCV的cvWriteFrame函数可将图像按帧写入到视频文件写入器中,函数的原型为cvWriteFrame(CvVideoWriter*writer,constIplImage*image),所以需要先将8bit灰度图像转换后的Colormap再转换为IplImage格式,转换的关键代码如下:IplImage*iplImg=cvCreateImage(cvSize(img.width(),img.height()),IPL_DEPTH_8U,1);最后使用cvWriteFrame函数将图片转换为视频流格式进行保存4读取视频记录的图像在PC机上运行该应用程序,通过网口与视频记录系统进行连接,确认网络连接正确后,点击开始采集按钮,读取视频记录系统的图像数据。图2为实验室环境下的实测图。5实验结果和分析本文在Windows平台下,结合Qt5和OpenCV图形处理库,采用多线程编程方法,实现了某视频记录系统的上位机软件设计。实验证明,该应用程序工作稳定、数据准确可靠,已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论