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
    +关注

    关注

    33

    文章

    651

    浏览量

    44427
  • 视频流
    +关注

    关注

    0

    文章

    18

    浏览量

    10567
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123915
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    2025无线视频传输模块选购指南与应用方案推荐

    无线视频传输模块作为视频传输技术的重要组成部分,已经从传统的消费级应用扩展到工业、医疗、安防、影视制作等多个领域。面对市场上种类繁多的产品与技术方案,如何选择合适的无线视频传输模块成为行业用户的一大
    的头像 发表于 11-10 14:48 271次阅读

    视频数据流传输的框架搭建思路

    环境:Vivado2021.1、NucleiStudio_IDE_202102-win64 内容:简单讲解下利用vivado来调用控制模块,以实现ov7725摄像头的视频数据流传输。 首先设计顶层
    发表于 10-24 06:53

    【开发实例】基于GM-3568JHF开发板安装OpenCV并使用视频目标跟踪 ( CamShift)

    在计算机视觉领域,视频目标跟踪是一个非常重要的任务。视频目标跟踪广泛应用于监控、自动驾驶、人机交互等多个领域。OpenCV提供了多种目标跟踪算法,其中MeanShift和CamShift是两种经典且
    的头像 发表于 09-02 08:04 470次阅读
    【开发实例】基于GM-3568JHF开发板安装<b class='flag-5'>OpenCV</b>并使用<b class='flag-5'>视频</b>目标跟踪 ( CamShift)

    零成本钢铁侠手套!树莓派+OpenCV 秒变手势遥控器!

    使用树莓派和OpenCV实时扫描并存储二维码使用树莓派和OpenCV实现物体与动物识别使用树莓派、摄像头和OpenCV进行速度检测用树莓派+Open
    的头像 发表于 08-16 16:16 893次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒变手势遥控器!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    使用树莓派和OpenCV实时扫描并存储二维码使用树莓派和OpenCV实现物体与动物识别使用树莓派、摄像头和OpenCV进行速度检测用树莓派+Open
    的头像 发表于 08-14 17:45 976次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b>实现面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    使用树莓派和OpenCV实时扫描并存储二维码使用树莓派和OpenCV实现物体与动物识别使用树莓派、摄像头和OpenCV进行速度检测今天是第一部分:使用树莓派与Op
    的头像 发表于 08-13 17:44 981次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b>实现姿态估计和面部特征点追踪?

    【GM-3568JHF开发板免费体验】OpenCV 视频目标跟踪 ( CamShift)

    一、基本理论 在计算机视觉领域,视频目标跟踪是一个非常重要的任务。视频目标跟踪广泛应用于监控、自动驾驶、人机交互等多个领域。OpenCV 提供了多种目标跟踪算法,其中 MeanShift
    发表于 08-09 13:19

    CYUSB3014使用块传输和使用流传输,可达到的最大吞吐率是不是差很多?

    先问,使用块传输和使用流传输,可达到的最大吞吐率是不是差很多? 我的应用是这样的,FPGA通过3014传送数据,每150us传输两个包的数据,每个包1024个字节,上位机程序一直循环接收,实际的
    发表于 05-08 06:33

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

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

    5G网络中,信令测试仪如何帮助提升用户体验?

    。 这有助于运营商顺利部署新技术,提升网络的整体性能和用户体验。 四、提升用户体验的具体案例 优化视频流传输: 信令测试仪可以模拟用户观看视频的场景,测试
    发表于 03-21 14:33

    使用OpenCV保存从摄像头捕获的视频时更改颜色输出视频收到警告怎么解决?

    保存了从配备 OpenCV* 的摄像头捕获的视频。 生成更改的颜色输出视频。 收到警告:[ INFO:0] global .。/opencv/modules/core/src/uti
    发表于 03-05 07:20

    低空视频传输在望获实时linux系统上的应用

    望获实时linux系统因其高确定性和低延迟的特性,在低空视频传输中扮演着关键角色。低空经济涵盖无人机物流、农业监控、低空交通管理等场景,这些场景对视频传输实时性、可靠性和高效性有极高
    的头像 发表于 01-24 17:21 874次阅读

    AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案

    。 接下来,我们将探讨如何利用这些技术构建一个简易的局域网视频流传输系统,包括具体的实现步骤和技术细节。您将看到,通过合理的设计和配置,即使是普通用户也能够在自己的环境中轻松搭建起一套实用的实时监控
    发表于 01-04 14:32

    AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案

    视频流的传输。这种设置不仅适用于家庭和小型企业的安全监控,也能满足远程教育、医疗监护等多个领域的需要。面对局域网内的视频流传输挑战,有多种方法可以实现从摄像头到显
    的头像 发表于 01-04 12:00 1170次阅读
    AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网<b class='flag-5'>视频</b><b class='flag-5'>流传输</b>方案

    ptp对实时数据传输的影响

    在现代通信技术中,点对点(P2P)网络已经成为数据传输的一种重要方式。P2P网络允许网络中的每个节点既可以作为客户端也可以作为服务器,直接进行数据交换。这种去中心化的
    的头像 发表于 12-29 09:53 1047次阅读