由于本地机器没有显卡,需要从本地加载视频里的关键帧调用服务器的模型服务。但是发现响应非常慢,分析后发现原因在于:
本地将图片转为了list,太大。
具体情况
一张分辨率为3840*2160的图片
png只占24k
转换为ndarray,再转为list,保存为json占了77M的格式
所以如果采用接口,直接传图片。原因应该是png的压缩算法吧。
代码
尽量避免存储文件的代码写法
客户端
from PIL import Image
from io import BytesIO
import requests
image = Image.open('a.png')
buffered = BytesIO()
image.save(buffered, format='JPEG')
binary_data = buffered.getvalue()
buffered.seek(0)
payload = {}
files = [("file", binary_data)]
response = requests.request(
"POST",
url="url",
data=payload,
files=files,
)
服务器端
from flask import request
file = request.files.get("file", "")
img = Image.open(BytesIO(file.read()))
img.show()