2024-09-01
Python
00

目录

何为bytes?
np.frombuffer
cv2.imdecode
bytes转图片numpy矩阵
逆运算 numpy矩阵转bytes
bytes转图片numpy矩阵
完整代码:

何为bytes?

是Python3的数据类型,详见:http://c.biancheng.net/view/2175.html

np.frombuffer

返回一维数组:

在这里插入图片描述

cv2.imdecode

cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。

cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。

bytes转图片numpy矩阵

python
img = cv2.imdecode(np.frombuffer(file, dtype=np.uint8), cv2.IMREAD_COLOR)

逆运算 numpy矩阵转bytes

这里的img_bytes 就是bytes的file

python
# 对数组的图片格式进行编码 success, encoded_image = cv2.imencode(".jpg", img) # 将数组转为bytes img_bytes = encoded_image.tostring()

bytes转图片numpy矩阵

完整代码:

python
# -*- coding:utf-8 -*- import uvicorn from fastapi.middleware.cors import CORSMiddleware from fastapi import FastAPI, File, Form, UploadFile import cv2 import numpy as np from io import BytesIO app = FastAPI( title='FastAPI Tutorial', description='FastAPI教程', version='1.0.0', docs_url='/docs', redoc_url='/redocs', ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.post("/files/") async def alg_file( file: bytes = File(...), token: str = Form(...) ): img = cv2.imdecode(np.frombuffer(file, dtype=np.uint8), 1) return { "token": token, "size": img.shape } if __name__ == '__main__': uvicorn.run('run1:app', host='0.0.0.0', port=8002, reload=True, debug=True, workers=1)
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!