基于QT的多线程视频监控的实现(一)
《基于QT的多线程视频监控的实现(一)》
《基于QT的多线程视频监控的实现(二)》
《基于QT的多线程视频监控的实现(三)》
本系统是采用的Windows的开发环境,采用了QT编程技术、Socket网络编程技术、TCP/IP和UDP网络协议、OpenCV、多线程等技术实现的。
主要任务可分为三大模块:视频数据信号的采集部分、网络传输部分以及远程客户端接收部分。而选择使用QT开发视频监控系统的好处就在于以后能够很好的移植到移动终端,为之后的扩展做准备。
一、环境的搭建
本多线程视频监控系统是在windows下开发的,开发的工具选用的是QT,QT原是诺基亚公司旗下的多功能开发框架,具有移植性高,功能强大,易于扩展等特点。同时,它所拥有的库十分广泛,为开发者提供了强有力的条件,对于开发者来说,QT是开发快捷,短小而精悍应用的最佳选择。
使用的是openCV库来进行对摄像头的采集,与图像的处理。
搭建QT开发环境
(1) 生成与配置QT openCV的开发环境
本次开发利用的QT环境是QT 5.4环境,对于QT5.4来说,增加了很多更为强大的功能类,可以更好的实现用户的需求,比如QT可以跟其他的框架进行交互,添加了QOpenGLWindow类,很方便的通过OpenGL将内容绘制到QWindow,也有加入了原生文件对话框的支持等多种可用类。同时,需要用到第三方的库OpenCV,OpenCV库使用的版本是OpenCV 2.4.10,需要先从官网上将OpenCV下载下来,但是下下来的并不能直接使用,先将下载下来的opencv-2.4.10.exe用解压软件解压到你指定的路径下,然后利用CMake (cmake-gui)软件来将解压得到的sources的源代码用mingw491_32的gcc与g++进行编译,等待编译结束后,生成了我们所需要的QT的OpenCV库,然后再将得到的第三方的库的相关的文件加入到PATH环境变量中,到此,就完成了QT环境的安装与配置。如下图1.1所示
图1.1cmake生成mingw32版本的OpenCV的链接
注意:具体的生成mingw32版本的openCV可以找相关的博客,本处不做过多的解释。
(2) 工程中添加opencv相关的链接库
在建完QT的工程后,进行配置工程所需要的PATH。先来把工程打开,里面有个.pro文件,双击打开后,在.pro中
加入一行QT+=network和sql,这两个分别是网络部分和数据库部分。然后需要把OpenCV部分加入进来了。需要把
OpenCV的相关的头文件加入进来,还有之前生成的相关的链接库文件的路径加入工程中。这样,环境就搭建完成了
,就可以开始写代码了。配置如下图1.2所示
图1.2为添加opencv的相关的链接库
注:至此,环境搭建完成了。
二、整体的设计与实现流程
(1) 监控系统的整体设计
在多线程视频监控系统中,整体采用C/S架构,其中C为客户端,S为服务器。其中,服务器主要是获取采集到的数据并通过UDP协议发送。而客户端主要是接收到的数据,并将数据进行处理。
服务器主要是将采集到的数据进行编码和网络传输。同时,服务器也显示视频。
在客户端时,加入了一个登陆验证模块。每次打开软件时,需要登陆确认,用户可以注册新用户名或者使用已经有的用户名和密码。主要是将接收到的数据进行解码、显示。客户端可以暂停接收,截取图片,录制视频的功能。整体设计结构图如下图2.1所示
(2) 采集功能模块的实现
在多线程视频监控系统中,图像采集尤为重要的。本系统的图像采集是通过笔记本电脑自带的摄像头,通过
OpenCV的库,先将摄像头初始化,将摄像头驱动起来,然后获取摄像头的一帧图像,将抓取到的帧,转化为
QImage格式,在服务器上显示。另一部分,将获取到的帧转化为可传输码,在这个过程中,由一个定时器控制所
采帧的频率。采集到图像的设计图如下图2.2所示:
图2.2 采集模块设计图
(3) 传输控制模块设计
在传输模块中,需要先获取到采集的数据存入缓存中,然后从缓存中拷贝一份通过信号发送,先利用TCP连接,连接成功
后,先来获取客户端的IP,然后就用UDP协议来进行传输数据,采用多线程技术,将服务器上的数据传输到客户端上,实现了
数据的传输。分别利用TCP与UDP网络协议的各自的优缺点,进行组网,搭建一个高速,准确传输的网络系统。如下图2.3所示
图2.3网络传输控制模块的结构设计图
OpenCV及编译好的库下载
注:本篇到此结束,请看下一篇
欢迎大家加我的群:460952208
《 基于QT的多线程视频监控的实现(二)》多窗口分割
基于QT的多线程视频监控的实现(一)相关推荐
- 基于ARM的移动视频监控系统
http://www.eeworld.com.cn/qrs/2010/0409/article_2439_1.html 0 引 言 传统的视频监控系统一般采用PC服务器的C/S(Client/Serv ...
- 介绍基于ARM的移动视频监控系统
摘要:将嵌入式Linux和无线网络引入到视频监控系统,阐述了系统的硬件组成:介绍了USB无线网卡驱动实现的过程:从嵌入式Linux开发环境的搭建.嵌入式流媒体服务器的设计和动态网页的设计等方面介绍了软 ...
- 基于Qt的车载GPS监控系统(2)需求分析
基于Qt的车载GPS监控系统(2)需求分析 嵌入式开发培训(阶段3)嵌入式图形应用开发视频地址 冷链车载GPS监控系统 视频地址 项目实践流程: 1.设计项目需求文档 说明项目设计目的,项目功能,项目 ...
- linux 车载视频监控,基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文.docx...
基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文 目录 HYPERLINK \l "_bookmark0" 第一章 绪论1 HYPERLINK \l "_ ...
- 【基于arduino的esp32-cam视频监控简单使用】
基于arduino的esp32-cam视频监控简单使用 一.软件准备 arduino下载链接 二.硬件准备 三.环境配置 打开软件是这个界面 点击文件里面的首选项进行配置 在附加开发板管理器中添加网址 ...
- 【CV/Matlab系列】基于matlab GUI的视频监控界面
DATE: 2020.10.18 updated at 2022.04.23: 界面上增加报警提示功能 文章目录 1.前言 2.视频监控界面 2.1.初始化界面 2.2.人脸检测和计数功能 2.3.监 ...
- 基于ARM的远程视频监控系统的设计
http://www.21ic.com/app/mcu/201208/135975.htm 摘要:在ARM 微处理器平台上移植嵌入式Linux 操作系统,完成视频采集任务,并以服务器方式将图像发送到网 ...
- b s架构监控java,基于B/S的视频监控系统的设计与实现
基于B/S的视频监控系统的设计与实现 本文分析了基于C/S架构的视频监控系统的缺点和B/S结构的诸多优点,通过需求分析,设计实现了一种以B/S为架构的视频监控系统,并针对现存视频监控系统在权限控制方面 ...
- 毕设教程:基于嵌入式Linux和Qt实现的视频监控系统(Arm/树莓派/jetson)
本文章将教你做一个用嵌入式linux开发板和Qt来实现的视频监控系统. 知识点:嵌入式 Linux V4L2 socket QT 本项目是博主大学时的毕业设计题目,现分享给大家,需要其他题目可点如下链 ...
最新文章
- 20172319 实验二《树》实验报告
- mysql delete in 结果集_MySQL从删库到跑路(2)SQL语句示例
- Android开源框架源码鉴赏:Okhttp
- 微信小程序获取用户手机号--官方示例
- excel 下拉框选择月份显示不同的日历_秒杀Excel的数据分析工具,几分钟教你完成数据填报...
- 交换算法经常使用的两个数的值
- 安卓PopupWindow
- bin文件怎么转换成文本文档_Python脚本4:根据txt文本,批量创建文件夹
- Is It A Tree?(hdu1325)
- 结构体含有指针的写入文件
- mysql查询条件中使用 或 !-的问题
- 论文笔记:针对盲化的 RSA算法的水平聚类侧信道攻击
- 青龙面板—-抖音极速版(2022.08.11)
- 进入旅游营销时代,携程有什么“大招”?
- transformation-matrix
- 连平县新视界-连平2018年公开招聘教职员66人
- 常用的几种集合(Map另写)
- 技术沙龙出海日本:分享京东区块链实践与创新
- 高频时电阻不再是电阻
- YL工作记录 (不断更新) -- 2020.04