Python web框架 fastapi/flask 接收图像并使用cv2进行处理
一般来说,使用web框架接收图片数据后,希望能够直接处理,而不是不保存为本地图片后再加载,以此省去IO时间。这种场景在CV服务中更为常见。
以下是一种方法,接收完图片数据之后,转为opencv 的Image array对象并返回:
import cv2 import numpy as np def process_image(image_data): # 将图像数据转为cv2 Image array对象 image_np = np.frombuffer(image_data, np.uint8) image = cv2.imdecode(image_np, cv2.IMREAD_COLOR) return image
读取的数据,与直接读取本地图片文件返回的数据一致:
image = cv2.imread(filename)
在Fastapi中,可以异步接收完图片数据之后,调用这个函数进行数据转换:
from fastapi import File, UploadFile
@app.post("/api/inference") async def infer(file: UploadFile=File(...)): # 接收文件并转成适当的格式 contents = await file.read() processed_image = process_image(contents) # 接着做其他的处理 ...
在Flask中,可以这么处理:
from flask import request
@app.post("/api/inference") def infer(): file = request.files['file'] processed_image = process_image(file.read()) # 接着做其他处理 ...
参考:
[1] FastAPI 接收图像并使用cv2进行处理,然后返回图像
[2] Flask接收和返回图片
(完)
本文版权归作者(https://www.cnblogs.com/harrymore/)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,如有问题, 可邮件(harrymore@126.com)咨询.