当前位置: 首页 > news >正文

【OpenCV DNN】Flask 视频监控目标检测教程 01

欢迎关注『OpenCV DNN @ Youcans』系列,持续更新中
【OpenCV DNN】Flask 视频监控目标检测教程 01

【OpenCV DNN】Flask 视频监控目标检测教程 01

    • 1. 面向Python程序的Web框架
    • 2. Flask 框架的安装与使用
      • 2.1 Flask 安装
      • 2.2 Flask 框架例程
      • 2.3 绑定IP和端口
      • 2.4 Flask路由


本系列从零开始,详细讲解使用 Flask 框架构建 OpenCV DNN 模型的 Web 应用程序。

将OpenCV DNN模型部署到Web端,不需要安装任何依赖,只需要访问Web地址就可以访问和运行应用程序。

面向Python程序的Web框架可以用于部署应用程序。Web框架使开发者可以专注于应用程序的核心算法和业务逻辑,而不必具体处理底层细节,例如协议、套接字或进程和线程管理。


1. 面向Python程序的Web框架

Web 框架主要用于网站开发,为开发者实现业务逻辑提供了一套通用方法,可以实现数据的交互和业务功能的完善。

开发者在基于Web框架实现业务逻辑时,可以专注于应用程序的核心算法和业务逻辑,而不必具体处理底层细节,例如协议、套接字或进程和线程管理。在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己重新实现。

Python的开发速度和灵活性使其可以很容易地快速建立和运行网站。,Python在web框架中提供了大量的选择和自由度。

Django
Django是一个免费的、开源的全栈Python Web 开发框架,开发快速、代码较少、可扩展性强。Django 采用 MTV(Model、Template、View)模型组织资源,框架功能丰富,模板扩展选择最多,适合大型网站开发。Django的学习曲线相对陡峭,灵活度较差。

Flask
Flask 是一个Python 编写的Web微框架,让我们可以用Python语言快速实现Web服务。只提供Web服务器支持,不提供全栈开发支持。Flask 非常轻量、学习简单,适合小微原型系统的开发。

Bottle
Bottle 是一个用于 Python 的快速、简单和轻量级的 WSGI 微型网络框架。它作为单个文件模块分发,除了 Python 标准库之外没有任何依赖项。支持干净和动态的 URL。

Flask 是非全栈框架,Flask 具有以下依赖项:

  1. Werkzeug WSGI 工具包: WSGI 实用程序库
  2. Jinja2:模板引擎

Django 和 Flask 均可用于部署开发计算机视觉和深度学习应用程序,但 Flask 的学习曲线更平滑,且 Flask 专注于极简主义。


2. Flask 框架的安装与使用

2.1 Flask 安装

为了使用 Flask 构建计算机视觉 Web 应用程序,首先进行安装:

$ pip3 install flask

安装完成后,通过控制台命令cmd或 Anaconda Prompt (miniconda)进入命令行进行测试。

$ python>>> import  flask
>>> print(flask.__version__)
2.3.1

在这里插入图片描述


2.2 Flask 框架例程

使用Flask框架编写一个显示“Hello Flask!”的web程序,介绍如何配置、调试Flask框架。

(1)新建一个Flask项目,项目的文件树如下。

---项目文件名\|---static\|---templates\|--- server.py

项目默认配置建立static和templates目录,static目录用来存放静态资源,例如图片、js、css文件等,templates目录存放模板文件。网站逻辑保存在Python程序文件server.py中。

# server.py
from flask import Flask  # 导入 Flask 包app = Flask(__name__)  # 用当前脚本名称实例化Flask对象@app.route('/')  # 将函数绑定到指定URL
def hello():return 'Hello Flask!'if __name__ == '__main__':app.run()  # 启动一个本地开发服务器,激活该网页

例程首先创建 Flask 类的实例,作为Web服务器的网关接口(Web Server Gateway Interface, WSGI)。然后,route()装饰器用于指定URL的触发函数,将触发函数绑定到指定URL。最后,函数返回在浏览器中显示的内容。

(2)运行Python程序。

运行程序server.py,在控制台显示如下的消息,表明Web服务器已启动。

$ python server.py* Serving Flask app 'server'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000/
(Press CTRL+C to quit)

(3)在浏览器中访问http://127.0.0.1:5000/。
这将对服务器发送GET请求,该请求将返回相应的消息:

127.0.0.1 - - [26/Apr/2023 21:42:13] “GET / HTTP/1.1” 200 -
127.0.0.1 - - [26/Apr/2023 21:42:13] “GET /favicon.ico HTTP/1.1” 404 -

在这里插入图片描述


2.3 绑定IP和端口

虽然flask命令可以启动一个本地服务器,但是每次程序修改后都需要手动重启服务器。将应用对象的debug属性设为True,可以启用Debug模式。

app.run(debug=True)

在Debug模式下,修改应用代码之后服务器会自动重启,当应用出错时还会提供一个调试器。重新运行Python程序,在控制台将显示如下的消息。

* Serving Flask app 'server2'
* Debug mode: on * Restarting with stat* Debugger is active!* Debugger PIN: 110-148-621

Flask默认的绑定IP为127.0.0.1,端口为5000。通过设置参数host可以自定义IP地址,设置参数port可以自定义端口。

app.run(host=‘0.0.0.0’)

重新运行Python程序,在控制台将显示如下的消息。

 * Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:5000* Running on http://192.168.3.249:5000

这样就可以从局域网内的其他设备执行请求。例如,从连接局域网的手机访问IP地址:http://192.168.3.249:5000,将对服务器发送GET请求,并在手机浏览器中显示网页内容。

在这里插入图片描述


2.4 Flask路由

Web框架使用路由技术直接访问所需的页面,而无需从主页导航。

Flask中使用route()装饰器将应用程序的URL绑定到函数,可以实现路由访问。例如:@app.route('/hello')将URL/hello规则绑定到hello_world()函数。

@app.route('/hello')
def hello_world():return 'hello world'

用户访问 http://localhost:5000/hello,将在浏览器中显示hello_world()函数的输出。
application对 象的add_url_rule()函数也可用于将URL与函数绑定,如上例所示,使用route()装饰器的目的也由以下表示:

def hello_world():return 'hello world'
app.add_url_rule('/', 'hello', hello_world)

通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为<converter:variable_name>。它作为关键字参数传递给与规则相关联的函数。
例如,在下面的例程中,route()装饰器的规则参数包含附加到URL’/hello’的<name>

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return 'Hello world!'@app.route('/user')
def hello_user():return 'Hello user!'@app.route('/hello/<name>')
def hello_name(name):return 'Hello %s!' % nameif __name__ == '__main__':app.run(host='0.0.0.0')

如果在浏览器中输入http://localhost:5000/hello/youcans作为URL,则’youcans’ 将作为参数提供给 hello_name()函数。该请求将返回相应的消息:

 * Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:80* Running on http://192.168.3.249:80
Press CTRL+C to quit
127.0.0.1 - - [27/Apr/2023 09:06:27] "GET /hello/youcans HTTP/1.1" 200 -
127.0.0.1 - - [27/Apr/2023 09:06:27] "GET /favicon.ico HTTP/1.1" 404 -

在这里插入图片描述

【本节完】
下节内容:使用OpenCV+Flask部署Web应用程序


欢迎关注『OpenCV DNN @ Youcans』系列,持续更新中

版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:
【OpenCV DNN】Flask 视频监控目标检测教程 01 (https://blog.csdn.net/youcans/article/details/130785571)

Copyright 2023 youcans, XUPT
Crated:2023-05-20

相关文章:

【OpenCV DNN】Flask 视频监控目标检测教程 01

欢迎关注『OpenCV DNN Youcans』系列&#xff0c;持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 01 【OpenCV DNN】Flask 视频监控目标检测教程 01 1. 面向Python程序的Web框架2. Flask 框架的安装与使用2.1 Flask 安装2.2 Flask 框架例程2.3 绑定IP和端口2.4 Flask路…...

(转载)从0开始学matlab(第10天)—自顶向下的编程思想

在前面的内容中&#xff0c;我们开发了几个完全运转的 MATLAB 程序。但是这些程序都十分简单&#xff0c;包括一系列的 MATLAB 语句&#xff0c;这些语句按照固定的顺序一个接一个的执行。像这样的程序我们称之顺序结构程序。它首先读取输入&#xff0c;然后运算得到所需结果&a…...

mapreduce技术

要实现操作hbase数据表首先要了解它的原理&#xff1a; 1,Hbase原理篇 HBASE就是基于Hadoop的一个开源项目&#xff0c;也是对Google的BigTable的一种实现。 BigTable最浅显来看就是一张很大的表&#xff0c;表的属性可以根据需求去动态增加&#xff0c;但是又没有表与表之间…...

AI智慧安监视频平台EasyCVR视频出现不能播放的情况排查与解决

EasyCVR基于云边端协同&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高&#xff0c;可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码、平台级联等功能。 有用户反…...

嵌入式学习之Linux驱动(第九期_设备模型_教程更新了)_基于RK3568

驱动视频全新升级&#xff0c;并持续更新~更全&#xff0c;思路更科学&#xff0c;入门更简单。 迅为基于iTOP-RK3568开发板进行讲解&#xff0c;本次更新内容为第九期&#xff0c;主要讲解设备模型&#xff0c;共计29讲。视频选集 0.课程规划 06:35 1.抛砖引玉-设备模型…...

LeetCode662.设计循环队列||4种方法实现

目录 题目 思路1(链表) 代码 思路2(数组) 代码 题目 题目要求的队列需要实现的功能有 ①Creat---设置队列长度 ②Front---获取队列头 ③Rear---获取队列尾 ④en----插入元素 ⑤de---删除元素 ⑥empty---判空 ⑦full---判满 思路1(链表) &#x1f50d;普通队列长度没有限制&…...

人工智能专栏第十二讲——依存解析

依存句法分析是一种自然语言处理技术&#xff0c;其目的是识别句子中单词之间的依赖关系。在自然语言处理中&#xff0c;依存句法分析是一项非常重要的任务&#xff0c;因为它可以帮助我们理解句子的语义结构&#xff0c;从而更好地进行文本分析、信息抽取、语音识别等任务。 …...

nest日志包pino、winston配置-懒人的折腾

nest日志 三种node服务端日志选型 winstonpinolog4js 2023年5月23日 看star数&#xff1a;winston > pino > log4js 使用体验&#xff1a; pino 格式简洁&#xff0c;速度快&#xff0c;支持输入日志到任意数据库&#xff0c;日志暂无自动清理&#xff08;可能是我…...

一文看懂增值税发票识别OCR:从技术原理到 API Java 示例代码接入

引言 增值税发票识别OCR API是一项重要的技术创新&#xff0c;它在如今信息化的商业环境中发挥着重要作用。通过利用该API&#xff0c;企业和机构能够实现增值税发票的自动化识别和信息提取&#xff0c;从而在财务管理、票据核对、报销流程等方面带来许多好处。 本文将详细介…...

消息队列对比

目录 什么是消息队列 常用的消息队列工具对比 1 、ActiveMQ 2 、RabbitMQ 3、Kafka 4、 RocketMQ 什么是消息队列 消息队列是分布式应用间交换信息的重要组件&#xff0c;消息队列可驻留在内存或磁盘上, 队列可以存储消息直到它们被应用程序读走。通过消息队列&#xff0…...

Ceph对象存储的基本概念,使用以及优点

Ceph对象存储的基本概念&#xff0c;使用以及优点 Ceph是一种基于分布式架构的对象存储系统&#xff0c;它可以提供高可靠性、高扩展性和高性能的存储服务。这种存储系统可以用于处理大量的数据&#xff0c;例如大型数据库、云存储、视频流、图像数据等。Ceph对象存储系统的基…...

工业互联网UWB定位系统源码,支持自定义开发

工厂人员定位系统&#xff0c;采用UWB定位技术&#xff0c;通过在厂区内部署一定数量的定位基站&#xff0c;以及为人员、车辆、物资佩戴标签卡的形式&#xff0c;实时获取人员精确位置&#xff0c;精度高达10cm。 文末获取联系 工厂人员定位系统可实现物资/车辆实时定位&#…...

VIC模型教程

详情点击链接&#xff1a;RVIC模型融合实践技术应用及未来气候变化模型预测 一&#xff1a;VIC模型的原理与特点 1.VIC模型各模块的主要原理 2.VIC模型的特点及优势 3.VIC模型的适用范围及其限制 4.VIC模型主要输入和输出文件解析案例一 &#xff1a;基于QGIS的VIC模型建模…...

软件著作权容易搞吗?

没有代码、材料&#xff0c;只有一个软件名字就能拿证&#xff0c;你说容易不… 当然这是对我们软著一级代理来说&#xff0c;每年申请下证几千个软著。下面说说下证要点给大家避坑。人群覆盖高新企业、大学生、大学老师、互联网公司。 软件著作权想要轻松下证&#xff0c;必…...

Mac打出特殊字符

optionq&#xff1a;œ ---------optionw&#xff1a;∑ optione&#xff1a; ---------optionr&#xff1a; optiont&#xff1a;† ---------optiony&#xff1a; optionu&#xff1a; ---------optionI&#xff1a;无 optiono&#xff1a; ---------optionP&#xff1a;π o…...

java设计模式之单例设计模式的前世今生

单例设计模式是什么&#xff1f; 单例设计模式是一种创建型模式&#xff0c;它保证一个类只有一个实例&#xff0c;并且该实例提供了全局访问点。这意味着即使在不同的地方&#xff0c;访问这个单例实例的代码得到的都是同一个对象。 单例模式的特点如下&#xff1a; - 保证…...

小航助学2023年3月GESP_C++一级试卷(含题库答题软件账号)

GESP在线模拟训练系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级&#xff08;2019年3月&#xff09;在线答题_程序猿下山的博客-CSDN博客_小航答题助手 答案:B 第1题以下不属于计算机输入设备的有&#xff08; &#xff09;。 A、键盘B、音箱C、鼠标D、传感器 …...

好程序员:女生学Java好学吗?女生学Java有什么优势?

小源经常会听到女生咨询适不适合学习Java开发的问题&#xff0c;提出这种问题归根结底还是缺乏性别自信&#xff0c;默认女性比男性弱。实际上这个问题并不存在&#xff0c;男女平等才是正确的思维&#xff0c;当然&#xff0c;也为了解开女生们的心结&#xff0c;这里好程序员…...

为Eclipse安装lombok插件

原生的Eclipse没有lombok插件&#xff0c;即使项目引入了lombok依赖也无法正常使用Data等常用标签。下面介绍一下如何手动为Eclipse添加lombok插件&#xff0c;具体操作步骤如下&#xff1a; &#xff08;1&#xff09;打开Download地址&#xff0c;点击页面中间的超链接下载最…...

spring-boot 实现接口转发服务,同时支持get 和 post等多种请求

spring-boot 实现接口转发服务&#xff0c;同时支持get 和 post等多种请求 &#xff08;1&#xff09;新建类&#xff1a;ProxyController.java package com.taobao.product.controller;import com.taobao.framework.HttpResult; import io.swagger.annotations.Api; import …...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

P10909 [蓝桥杯 2024 国 B] 立定跳远

# P10909 [蓝桥杯 2024 国 B] 立定跳远 ## 题目描述 在运动会上&#xff0c;小明从数轴的原点开始向正方向立定跳远。项目设置了 $n$ 个检查点 $a_1, a_2, \cdots , a_n$ 且 $a_i \ge a_{i−1} > 0$。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时&#xff0…...

Python爬虫(四):PyQuery 框架

PyQuery 框架详解与对比 BeautifulSoup 第一部分&#xff1a;PyQuery 框架介绍 1. PyQuery 是什么&#xff1f; PyQuery 是一个 Python 的 HTML/XML 解析库&#xff0c;它采用了 jQuery 的语法风格&#xff0c;让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...