基于OpenCV实时图像采集与远程监控系统.docVIP

基于OpenCV实时图像采集与远程监控系统.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于OpenCV实时图像采集与远程监控系统

基于OpenCV的实时图像采集与远程监控系统 班级: 0805 姓名: 杨学齐 学号: 200892128 一、系统介绍 1.1系统功能介绍 本系统是基于OpenCV的实时图像采集、远程监控系统,主要分为两个功能模块 实时图像采集: 实时图像采集利用了OpenCV来实现,利用OpenCV库在定时器的调节下,可以从摄像头直接获取监控对象的图像。为了达到实时效果,必须保证帧频不能太低。实时采集另外一个重点是实时发送,采集到的图像必须实时发送到网络进行传输,因此采集线程和传输线程必须分为不同线程。 远程监控: 摄像头采集得到的图像是存储在本地的,必须通过网络的传输才可以实现远程监控,由于视频数据量比较大,必须经过压缩后才能传输,本系统采用了Jpeg图像压缩,再通过高性能网卡将压缩后的图像传输出去。监控端接受到数据后,进行Jpeg解压缩后显示。 1.2系统架构介绍 图像采集端程序架构: 由于需要实时进行图像采集和传输,因此必须将图像采集和图像传输分为不同的线程。 远程监控端程序架构: 监控端一方面进行网络数据接收,另外一方面必须将接收到的数据实时显示出来,也必须采用多个线程。 1.3系统关键技术介绍 1.3.1 OpenCV OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法 1.3.2 QT Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但Qt具有优良的跨平台特性、面向对象 、丰富的API、大量的开发文档等优点。 1.3.3 OpenCV帧与QT图像QImage之间的转化 QImage是Qt中的图像对象而IplImage是OpenCV中的对象,使用Qt和OpenCV必须进行两者之间的转化,主要是表示方法不同,位深及RGB之间的转换,这个部分是很重要的,详细代码在下面已经列出。 1.3.4 Jpeg图像压缩与图像序列化QByteArray 直接把位图数据传输到网络会给整个网络带来很大的压力,有时网速不高,图像采集的速率虽然很高,但是远程监控端会因为网络原因收不到图像,因此对图像的数据量压缩是很有必要的。这里采用的是QT中Jpeg压缩,需要Jpeg库的支持。压缩之后的数据量大大减少了。 Socket发送的数据是没有对象的信息的QImage也不能直接被发送到远程监控端,必须序列化到QByteArray,这是一个字符流,将压缩后的图像对象序列化到QByteArray再进行传输。 1.3.5 Socket网络传输发送和接受 采用Socket直接进行网络传输,能够最大限度的压缩数据包的大小,控制校验图像的格式,图像采集端必须一边采集一边发送,这个同步进行的工作是通过线程来完成的,提供程序的效率。 另一方面远程监控端同样需要一边接收数据一边显示,也是通过多线程技术实现的,接收到的数据传递给显示线程,这需要将字符流QByteArray重新组装成一个QImage对象,然后显示出来。这个过程必须有准确的校验否则数据会显示不完整。 二、系统关键代码使用OpenCV库定时采集图像 int main(int argc, char *argv[]) { CvCapture* camera = cvCreateCameraCapture(0); //建立OpenCV图像捕获对象 assert(camera); IplImage * image=cvQueryFrame(camera); assert(image); qDebug()Image depth=image-depthn; qDebug()Image nChannels=image-nChannels\n; QApplication a(argc, argv); MainWindow w(camera); w.setWindowTitle(VideoCapture); w.show(); int return_value = a.exec(); cvRele

文档评论(0)

phl805 + 关注
实名认证
文档贡献者

建筑从业资格证持证人

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

领域认证 该用户于2023年05月12日上传了建筑从业资格证

1亿VIP精品文档

相关文档