0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于OpenCV的网络实时视频流传输教程

电子设计 来源:电子设计 作者:电子设计 2020-12-14 21:59 次阅读

文章转载于微信公众号: 小白学视觉
作者:努比

很多小伙伴都不会在家里或者办公室安装网络摄像头或监视摄像头。但是有时,大家又希望能够随时随地观看视频直播。
大多数人会选择使用IP摄像机(Internet协议摄像机)而不是CCTV(闭路电视),因为它们具有更高的分辨率并降低了布线成本。在本文中,我们将重点介绍IP摄像机。IP摄像机是一种数字摄像机,可以通过IP网络接收控制数据并发送图像数据,并且不需要本地记录设备。大多数IP摄像机都是基于RTSP(实时流协议)的,因此Internet浏览器本身“不支持”它

01.如何使用Web浏览器查看实时流媒体

计算机视觉是一个跨学科领域,涉及如何制作计算机以从数字图像或视频获得高层次的理解。为了实现计算机视觉部分,我们将使用Python中的
OpenCV模块,并在Web浏览器中显示实时流,我们将使用FlaskWeb框架。在进入编码部分之前,让我们首先简要地了解这些模块。如果您已经熟悉这些模块,则可以直接跳到下一部分。
根据Wikipedia的说法,Flask是用Python编写的微型Web框架。它被归类为微框架,因为它不需要特定的工具或库。它没有数据库抽象层,表单验证或任何其他现有的第三方库提供公用功能的组件。
根据GeeksForGeeks的说法,OpenCV是用于计算机视觉,机器学习和图像处理的巨大开放源代码库,现在它在实时操作中起着重要作用,这在当今的系统中非常重要。

02.操作步骤
第1步-安装Flask和OpenCV:
可以使用“_pip install_flask”和“_pip install opencv-python_”命令。我使用PyCharm IDE开发flask应用程序。
第2步-导入必要的库,初始化flask应用程序:
现在,我们将导入必要的库并初始化我们的flask应用程序。

#Import necessary libraries

第3步-使用OpenCV捕获视频:
创建一个VideoCapture()对象以触发相机并读取视频的第一个图像/帧。我们可以提供视频文件的路径,也可以使用数字来指定本地网络摄像头的使用。要触发网络摄像头,我们将“ 0”作为参数传递。为了从IP摄像机捕获实时源,我们提供RTSP链接作为参数。

camera = cv2.VideoCapture(0)

第4步-添加窗口并从相机生成帧:

gen/_frames()函数进入一个循环,在该循环中,它不断从相机返回帧作为响应块。该函数要求摄像机提供一个帧,然后将其格式化为内容类型为的响应块,并使其屈服image/jpeg,如上所示。代码如下所示:

def gen_frames():  

*第5步-为网络应用的默认页面定义应用路由*:
路由指的是应用程序的URL模式(例如myapp.com/home或myapp.com/about)。@app.route("/")是Flask提供的Python装饰器,用于在我们的应用中分配URL以便轻松运行。

@app.route('/')

装饰器告诉我们@app,只要用户访问给定的应用程序域(_本地服务器的localhost:5000)_.route(),就执行该index()功能。Flask使用Jinja模板库渲染模板。在我们的应用程序中,我们将使用模板来呈现HTML,这些HTML将显示在浏览器中。
*第6步-定义视频供稿的应用路由:*

@app.route('/video_feed')

“ / video/_feed”路由返回流式响应。由于此流返回要在网页中显示的图像,因此路由的URL在image标记的“ osrc”属性中(请参见下面的“ index.html”)。浏览器将通过在其中显示JPEG图像流来自动更新图像元素,因为大多数/所有浏览器都支持多部分响应
让我们看一下我们的index.html文件:


第7步-启动Flask服务器

if __name__ == "__main__":

调用app.run()并将Web应用程序本地托管在[localhost:5000]上。
“ debug = True”可确保我们不需要在每次进行更改时都运行应用程序,只需在服务器仍在运行时刷新网页即可查看更改。
项目结构:

该项目保存在名为“摄像机检测”的文件夹中。我们运行“ app.py”文件。运行此文件后,我们的应用程序将托管在本地服务器的端口5000上。

只需在运行“ app.py”后在网络浏览器中键入“ localhost:5000”即可打开您的网络应用程序

app.py —这是我们在上面创建的Flask应用程序

模板-此文件夹包含我们的“ index.html”文件。在渲染模板时,这在Flask中是必需的。所有HTML文件都放在此文件夹下。

让我们看看当我们运行'app.py'时会发生什么:

在单击提供的URL时,我们的Web浏览器将打开实时供稿。由于我使用了上面的VideoCapture(0),因此网络摄像头摘要会显示在浏览器中:

中有来自IP摄像机/网络摄像机的实时视频流,可用于安全和监视目的。

代码链接:https://github.com/NakulLakhotia/Live-Streaming-using-OpenCV-Flask

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenCV
    +关注

    关注

    29

    文章

    625

    浏览量

    41223
  • 视频流
    +关注

    关注

    0

    文章

    16

    浏览量

    10318
  • 深度学习
    +关注

    关注

    73

    文章

    5477

    浏览量

    120918
收藏 人收藏

    评论

    相关推荐

    基于OPENCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXPi.MX93开发板)的基于OpenCV的人脸检测方案测试。OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置
    的头像 发表于 11-07 09:03 713次阅读
    基于<b class='flag-5'>OPENCV</b>的相机捕捉<b class='flag-5'>视频</b>进行人脸检测--米尔NXP i.MX93开发板

    探索光耦:电流传输比(CTR)——了解光耦的重要参数

    在电子设计和元器件选型的过程中,电流传输比(CTR)是一个至关重要的参数,尤其是在光耦器件中。CTR不仅决定了光耦的性能,还会影响整体电路的稳定性和效率。那究竟什么是电流传输比?它对电路设计有何
    的头像 发表于 09-21 08:58 341次阅读
    探索光耦:电<b class='flag-5'>流传输</b>比(CTR)——了解光耦的重要参数

    【龙芯2K0300蜂鸟板试用】5 搭建opencv开发环境

    buildroot上需要打开opencv,将其编译进系统中,如下所示 测试可行性 测试是否编译成功,通过获取usb摄像头的视频来完成,本来是想通过qt的multimedia来实现,无奈k20300平台
    发表于 08-27 15:08

    XTR111进行V-I变换传输,采用电流传输比采用电压传输噪声大是什么原因导致的?

    本人在应用XTR111进行V-I变换传输的时候遇到了一个难题,原理图如下所示: 在采用电压传输时的波形和频谱图如下所示: 在采用电流传输时的底噪波形和频谱: 采集设备本身的底噪波形和频谱
    发表于 08-27 07:12

    TINA-TI交流传输特性仿真报错怎么解决?

    瞬态和交流节点电压仿真都是OK的,但是交流传输特性仿真就报错,请问怎样可以解决?感谢!!!
    发表于 08-08 06:46

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV
    的头像 发表于 07-16 10:38 904次阅读

    EZ-USB FX3 CYUSB3014-BZXI设备能否同时通过USB 2.0将视频流传输命令到UART线路?

    EZ-USB FX3 CYUSB3014-BZXI 设备能否同时通过 USB 2.0 将视频流传输命令到 UART 线路? 例如,我现在使用 PC 程序 1 在 USB 2.0 线路上串流视频,并同时使用 PC 程序 2 通过虚
    发表于 05-23 06:46

    【RTC程序设计:实时视频权威指南】计算机知识基础篇

    感谢论坛组织的学习活动,我们也已此篇未开始进入《实时视频权威指南(rtc程序设计)》的世界。 实时通信在当今互联网时代是非常重要的一种技术,我们在进行微信的语音视频交流,线上办公
    发表于 04-23 09:02

    【RTC程序设计:实时视频权威指南】新书一瞥

    应用,为开发者提供了完整的RTC解决方案。 首先RTC 是一个涉及音视频编解码、网络传输实时交互等多个领域的复杂技术。希望能通过这本书从基础知识开始,逐步深入到高级应用和系统设计。
    发表于 04-22 09:09

    【RTC程序设计:实时视频权威指南】传输控制优化阅读 及其实践分享

    书中第八章 传输控制优化,主要介绍了拥塞控制,弱网降级,抖动缓存与平滑发送,错误恢复等几个部分的内容。 其中抖动缓存与平滑发送是非常重要的一部分,在实践中是保证音视频实时不断流的传输
    发表于 04-21 17:11

    网络解码矩阵:医院高清视频传输的可靠保障

    在现代医疗体系中,高清视频传输扮演着举足轻重的角色。无论是远程手术指导、实时病情监控,还是患者日常护理,高清视频都为医疗工作提供了极大的便利。而在这背后,讯维网络解码矩阵以其高效、稳定
    的头像 发表于 03-25 17:26 381次阅读
    <b class='flag-5'>网络</b>解码矩阵:医院高清<b class='flag-5'>视频传输</b>的可靠保障

    讯维网络解码矩阵构建全面视频监控系统

    ,讯维网络解码矩阵具备高效解码能力,能够支持多路高清视频流的实时传输和并行解码。这意味着酒店内的各个监控点,无论是大堂、客房、走廊还是重要设施区域,都能够实现高清画面的
    的头像 发表于 03-25 17:21 307次阅读

    视频解码生成与流媒体传输的结合

    视频解码生成与流媒体传输是现代数字媒体技术中两个不可或缺的部分,它们的结合为用户提供了高质量、实时性的多媒体体验。 1. 解码生成与流媒体传输的关系 解码生成是流媒体
    的头像 发表于 02-21 14:36 355次阅读

    视频光纤矩阵与传统视频传输方式的比较分析

    随着视频技术的快速发展,高清、超高清甚至8K视频的需求日益增长,传统的视频传输方式已经难以满足这些高带宽、低延迟的需求。而视频光纤矩阵作为一种新兴的
    的头像 发表于 02-19 14:58 491次阅读

    HDBaseT传输器是否支持高清视频传输?是否能够传输3D视频信号?

    HDBaseT传输器是否支持高清视频传输?HDBaseT传输器是否能够传输3D视频信号? HDBaseT
    的头像 发表于 12-07 09:07 650次阅读