当前位置: 首页 > 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 …...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...