文章目录

  • 1.什么是Flask
  • 2.通过Flask上传图片到服务器端(以原名保存)

1.什么是Flask

  • Flask是一个基于python开发并依赖于 jinja2 模板和 werkzeug WSGI 服务器的一个微型框架。
  • 而werkzeug本质上是一个 socket 服务端,用于接收浏览器发送过来的请求,并进行预处理,然后再触发flask,这个时候我们就通过flask给我们提供的功能去对浏览器发送的请求做一个处理,当要处理的文件相对比较复杂时,则需要通过jinja2模板来处理,也就是我们常说的 渲染 ,之后再把处理过的数据返回给浏览器

学习链接:

2.通过Flask上传图片到服务器端(以原名保存)

server.py

from flask import request
from flask import Flask
import json
import numpy as npimport cv2
import base64
from gevent.pywsgi import WSGIServerapp = Flask(__name__)# 定义路由
@app.route("/photo", methods=['POST'])
def get_frame():# 接收图片# upload_file = json.loads(request.json)# print(upload_file['file'])# upload_file=request.form['file']filename=request.get_json()print(filename)# print(type(filename)=='str')if (isinstance(filename,str)):filname1=json.loads(filename)tmp=filname1['file']name=filname1['name']img = base64.b64decode(str(tmp))image_data = np.fromstring(img, np.uint8)image_data = cv2.imdecode(image_data, cv2.IMREAD_COLOR)cv2.imwrite('F:/pycharm/feature_match/face_result/{}'.format(name), image_data)else:tmp=filename['file']img = base64.b64decode(str(tmp))image_data = np.fromstring(img, np.uint8)image_data = cv2.imdecode(image_data, cv2.IMREAD_COLOR)cv2.imwrite('F:/pycharm/feature_match/face_result/1.jpg', image_data)# fff=json.load(filename)# print(upload_file)# img=cv2.imread(tmp)# cv2.imwrite("222.jpg",img)# print(className,prob)json_info = json.dumps(dic, ensure_ascii=False)return json_infoif __name__ == "__main__":dic = {}app.run(host='10.16.55.26',port=9000)## Serve the app with gevent# http_server = WSGIServer(('0.0.0.1',5000),app)# http_server.serve_forever()

client.py

import requests
import base64,glob
import json,cv2,os
import numpy as np
# API地址
url = "http://10.16.55.26:9000/photo"# opencv读取出来的图片相当于numpy数组
def cv2_to_base64(image):image1 = cv2.imencode('.jpg', image)[1]image_code = str(base64.b64encode(image1))[2:-1]return image_codedef base64_to_cv2(image_code):#解码img_data=base64.b64decode(image_code)#转为numpyimg_array=np.fromstring(img_data,np.uint8)#转成opencv可用格式img=cv2.imdecode(img_array,cv2.COLOR_RGB2BGR)return img
# with open(r'D:\pycharm\car_fee_system\images\result\2.jpg', 'rb') as f:
#     img = base64.b64encode(f.read()).decode()
path=r'D:\pycharm\car_fee_system\images\result/'
images_paths = glob.glob(os.path.join(path + '*.jpg')) #*.jpg中的*,表示能匹配多个字符
for images_path in images_paths:a,b= os.path.splitext(os.path.split(images_path)[1])name=str(a)+str(b)print(name)image=cv2.imread(images_path)image_code=cv2_to_base64(image)image = []image.append(image_code)# 拼接参数files = {'file': image,'name': name}fff=json.dumps(files, ensure_ascii=False)# 发送post请求到服务器端json.dumps(files, ensure_ascii=False)# r = requests.post(url, json=json.dumps(files, ensure_ascii=False))r = requests.post(url, json=fff)print(r.status_code)print(r.content)print(type(json.dumps(files, ensure_ascii=False)))

client_camera.py

import requests
import base64,glob
import json,cv2,os
import numpy as np
# API地址
url = "http://10.16.55.26:9000/photo"# opencv读取出来的图片相当于numpy数组
def cv2_to_base64(image):image1 = cv2.imencode('.jpg', image)[1]image_code = str(base64.b64encode(image1))[2:-1]return image_codedef base64_to_cv2(image_code):#解码img_data=base64.b64decode(image_code)#转为numpyimg_array=np.fromstring(img_data,np.uint8)#转成opencv可用格式img=cv2.imdecode(img_array,cv2.COLOR_RGB2BGR)return img
# with open(r'D:\pycharm\car_fee_system\images\result\2.jpg', 'rb') as f:
#     img = base64.b64encode(f.read()).decode()
# frame 就是每一帧图像,是个三维矩阵
# 参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频
capture = cv2.VideoCapture(0)
ret, frame = capture.read()
a='cemare1'
b=1
while ret:b+=1if b%5==0:ret, frame = capture.read()name=str(a)+'-'+str(b)image_code=cv2_to_base64(frame)image = []image.append(image_code)# 拼接参数files = {'file': image,'name': name}fff=json.dumps(files, ensure_ascii=False)# 发送post请求到服务器端json.dumps(files, ensure_ascii=False)# r = requests.post(url, json=json.dumps(files, ensure_ascii=False))r = requests.post(url, json=fff)print('200为成功 500为失败',r.status_code)print('正在上传第{}张图片,图片名为{}'.format(b,name))# print(r.content)# print(type(json.dumps(files, ensure_ascii=False)))

Flask学习笔记(二):基于Flask框架上传图片到服务器端并原名保存相关推荐

  1. Flask学习笔记(四):基于Flask网页显示图片

    原图如下 代码如下 from flask import Flask, request, make_response from datetime import datetime import osapp ...

  2. Flask学习笔记总结(一)

    Flask学习笔记总结(一) 说明:开始在csdn上面记录一些关于自己学习技术的笔记总结. 文章目录 Flask学习笔记总结(一) 前言 一.python的web三大框架 二.flask入门 1.ws ...

  3. 千锋Flask学习笔记

    千锋Flask学习笔记 文章目录 千锋Flask学习笔记 写在前面 1. Flask介绍 2. Views 3. Request 4. Response 5. 会话技术 6. 模型和模板 7. 数据传 ...

  4. Flask学习笔记(四): Flask与数据库连接

    Flask学习笔记(四): Flask与数据库连接 前言 前面我们学习了Flask如何构建一个程序的流程,又研究了它的路由如何设定,还对如何获取模板表单数据进行了梳理,值得一提的就是Flask和SQL ...

  5. Colly 学习笔记(二)——爬虫框架,抓取下载数据(上证A股数据下载)

    Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证A股数据下载) Colly 学习笔记(一)--爬虫框架,抓取中金公司行业市盈率数据 Colly 学习笔记(二)--爬虫框架,抓取下载数据(上证 ...

  6. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  7. Unity游戏框架学习笔记——03基于观察者模式的事件中心

    Unity游戏框架学习笔记--03基于观察者模式的事件中心 基于观察者模式的事件中心 一如既往指路牌:https://www.bilibili.com/video/BV1C441117wU?p=5. ...

  8. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  9. C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)【1】

    C#入门学习笔记(基于刘铁锰老师C#入门2014教学视频)[1] 前言: 本笔记作为记录我从零开始学习C#的记录,为了unity的兴趣爱好自学一门C#,也算是寒假为自己充个电,希望这个寒假可以坚持下去 ...

最新文章

  1. python 多线程和协程结合_一文讲透 “进程、线程、协程”
  2. apache php wordpress,windows 安装 apache php wordpress
  3. PyTorch中AdaptiveAvgPool函数总结
  4. 寻求神谕的词语:谈海日寒诗集《空山集》
  5. Fiddler简介及安装和HTTPS的解决
  6. c语言数组的实验报告结果思考,第七章实验报告(数组实验)
  7. pandas - pd.date_range-生成时间索引
  8. 水利工程中计算机软件用到什么,水利工程设计中计算机技术的应用论文
  9. tcping下载安装步骤,如何ping端口,tcping详解
  10. 什么是客户管理系统?
  11. python运用maya_适用于maya和其他3d应用程序的python版本
  12. 考研英语不熟悉的词义(List1-List5)
  13. 【遗传算法】模拟二进制交叉SBX与多项式变异
  14. springboot 利用aop实现系统日志和操作日志记录
  15. StringUtil工具类详解
  16. 事务四大特性(ACID)原子性、一致性、隔离性、持久性
  17. lis25ba_实验LIS25BA骨振动传感器采集音频
  18. 【蓝桥杯】2015初赛 三羊献瑞
  19. 32位ARM嵌入式处理器的调试技术
  20. vectorvn1610报价_VECTOR VN1610 CAN Network 通讯模块

热门文章

  1. css font-style italic 与 oblique 的区别
  2. 网易云音乐的 Kotlin 乐章 | Android 开发者故事
  3. [模型库]GB╱T 825-1988[吊环螺钉M8~M100] 三维模型
  4. openCV中的saturate_cast()方法
  5. 说说anchorPoint
  6. CNN的Python实现——第一章:机器学习基础
  7. CISCO ROUTE-MAP
  8. 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )
  9. 简单说明c++inline函数
  10. gcc的-l参数,-L参数,-I参数