python flask打造前后端分离的口罩检测
发布日期:2021-06-29 15:35:58 浏览次数:4 分类:技术文章

本文共 1819 字,大约阅读时间需要 6 分钟。

Python flask 打造前后端分离的口罩检测

整体设计思路是前后端分离,前端就是简单的html css来搭建,前后端交互使用的是jquery中的ajax技术,将前端接受到的图片进行base64编码,之后使用ajax发送到指定的url中,并在done函数添加回调,接受处理返回结果,将json结果 通过canvas控件绘图。后端的话就是使用python编写的轻量级的web框架flask,接受前端发过来的base64编码的图片,并对其解码,转换成PIL的图像对象,使用numpy转成矩阵,以便调用模型来检测检测。

背景知识点一、python flask框架

一个最小的 Flask 应用如下:

from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world():    return 'Hello, World!'

那么,这些代码是什么意思呢?

  1. 首先我们导入了 类。 该类的实例将会成为我们的 WSGI 应用。
  2. 接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。如果你使用 一个单一模块(就像本例),那么应当使用 __name__ ,因为名称会根据这个 模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 ‘main’ , 也可能是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里可以 找到模板和静态文件等东西。更多内容详见 文档。
  3. 然后我们使用 装饰器来告诉 Flask 触发函数的 URL 。
  4. 函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。

把它保存为 hello.py 或其他类似名称。请不要使用 flask.py 作为应用名称,这会与 Flask 本身发生冲突。

可以使用 flask 命令或者 python 的 -m 开关来运行这个应用。在 运行应用之前,需要在终端里导出 FLASK_APP 环境变量:

$ export FLASK_APP=hello.py$ flask run * Running on http://127.0.0.1:5000/

背景知识点二、ajax

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

实例使用

function communicate(img_base64_url) {  $.ajax({    url: "http://localhost:5000/api/",    type: "POST",    contentType: "application/json",    data: JSON.stringify({"image": img_base64_url}),    dataType: "json"  }).done(function(response_data) {      drawResult(response_data.results);  });}

背景知识点三、base64图片编码

图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址。

这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的(所有才有了 csssprites 技术的应运而生,但是 csssprites 有自身的局限性,下文会提到)。

没错,不管如何,图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,而可以随着 HTML 的下载同时下载到本地那就太好了,而 base64 正好能解决这个问题。

那么为什么要使用 base64 传输图片文件?上文也有提及,因为这样可以节省一个 http 请求。图片的 base64 编码可以算是前端优化的一环。效益虽小,但却缺能积少成多。

前后端分离的口罩检测

  • pyhon -m http.server

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j95olZTv-1616165984067)(E:\project\deeplearning_project\flask-object-detection-mask口罩检测前后端分离\imgs\1.jpg)]

  • python app.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3ih7bEn-1616165984070)(E:\project\deeplearning_project\flask-object-detection-mask口罩检测前后端分离\imgs\2.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VMwsCDeE-1616165984073)(E:\project\deeplearning_project\flask-object-detection-mask口罩检测前后端分离\imgs\3.jpg)]

在这里插入图片描述

转载地址:https://codingchaozhang.blog.csdn.net/article/details/115017863 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【大话Mysql面试】-MySQL基础知识
下一篇:理解String.intern()和String类常量池疑难解析例子

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月25日 07时03分41秒