gpt4 book ai didi

python - 使用Fast API接收图像,然后使用cv2处理它,然后将其返回

转载 作者:行者123 更新时间:2023-12-02 17:22:44 26 4
gpt4 key购买 nike

我正在尝试构建一个API,该API接收图像并对其进行一些基本处理,然后使用Open CV和Fast API返回其更新副本。到目前为止,我的接收器工作正常,但是当我尝试对处理的图像进行base64编码并将其发送回我的移动前端时,超时了。

作为调试实践,我尝试仅使用Insomnia打印编码的字符串并进行API调用,但是在打印数据5分钟后,我终止了该应用程序。返回base64编码的字符串在这里正确吗?有没有更简单的方法可以通过Fast API发送Open CV图像?

class Analyzer(BaseModel):
filename: str
img_dimensions: str
encoded_img: str

@app.post("/analyze", response_model=Analyzer)
async def analyze_route(file: UploadFile = File(...)):
contents = await file.read()
nparr = np.fromstring(contents, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

img_dimensions = str(img.shape)
return_img = processImage(img)

encoded_img = base64.b64encode(return_img)

return{
'filename': file.filename,
'dimensions': img_dimensions,
'encoded_img': endcoded_img,
}

最佳答案

@ZdaR的评论对我有用。通过将其重新编码为PNG,然后再将其编码为base64字符串,我能够使API调用正常工作。

工作代码如下:

class Analyzer(BaseModel):
filename: str
img_dimensions: str
encoded_img: str

@app.post("/analyze", response_model=Analyzer)
async def analyze_route(file: UploadFile = File(...)):
contents = await file.read()
nparr = np.fromstring(contents, np.uint8)
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

img_dimensions = str(img.shape)
return_img = processImage(img)

# line that fixed it
_, encoded_img = cv2.imencode('.PNG', return_img)

encoded_img = base64.b64encode(return_img)

return{
'filename': file.filename,
'dimensions': img_dimensions,
'encoded_img': endcoded_img,
}

关于python - 使用Fast API接收图像,然后使用cv2处理它,然后将其返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61333907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com