使用 Fast API 接收图像,使用 cv2 处理然后返回

2024-03-16

我正在尝试构建一个 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 的评论对我有用。我能够通过在将其编码为 Base64 字符串之前将其重新编码为 PNG 来使 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(encoded_img)

    return{
        'filename': file.filename,
        'dimensions': img_dimensions,
        'encoded_img': endcoded_img,
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Fast API 接收图像,使用 cv2 处理然后返回 的相关文章

随机推荐

  • slickgrid 标题的 Colspan 和 rowspan

    我只是想知道是否有一种方法可以为标题提供 colspan rowspan 并具有多个标题行 网格提供了一个辅助标题行 您可以用它来做任何您需要做的事情 检查here https github com mleibman SlickGrid w
  • 数据流中的值错误:GCS 位置无效:无

    我正在尝试从 GCS 存储桶加载数据并将内容发布到 pubsub 和 bigquery 这些是我的管道选项 options PipelineOptions project project temp location gs dataflow
  • 在 angularjs 中格式化日期和时区

    使用 angularjs 1 2 26 我无法将日期输入格式化为所需的时区 这是一个示例 http plnkr co edit CxCqoR3Awcl1NFrCZYjx p preview http plnkr co edit CxCqoR
  • 播放路由语法以忽略 slug 的一部分

    我们想要的基本上是这样的 foo controllers FooController foo 然而这不起作用 我们找到了以下解决方法 foo ignore controllers FooController foo ignore 但这使得该
  • Docker 存储库服务器向 HTTPS 客户端发出 HTTP 响应

    我使用适用于 Windows 的 Docker 工具箱 并且正在尝试参考此文档运行私有 docker 注册表https docs docker com registry deploying https docs docker com reg
  • Windows 安全自定义登录验证

    我正在创建一个 Xaml C 应用程序 我希望它能够弹出登录提示 我想知道是否可以使用 CredUIPromptForWindowsCredentials 显示 Windows 安全对话框 获取输入的用户名和密码 执行自定义验证 如果验证成
  • 10 月 Azure SDK 在插入带有尾随空格的字符串时损坏

    有没有人解决这个问题 使用存储模拟器并将行插入表存储时 如果字段末尾有空格 则行插入会失败 两周前就已经指出了这一点 但我仍然没有看到微软对此的任何更新 有谁知道修复方法吗 微软论坛链接 http social msdn microsoft
  • 如何使用javascript获取html中的元素背景图像

    我想获取使用 css 或元素背景属性设置的所有 html 页面元素的背景图像 我怎样才能使用javascript做到这一点 The getStyle 下面的函数取自http www quirksmode org dom getstyles
  • 重写规则以返回某些 URL 的状态 200

    我希望具有特定路径的 URL 自动返回 200 状态响应 我已尝试以下操作 但当我尝试启动 Apache 时出现错误 第一个错误 RewriteCond 错误的标志分隔符 RewriteEngine On RewriteCond THE R
  • 在 XSL 中创建空格 ( )

    我尝试通过以下方式在 XSL 文档中创建自动间距 td td
  • 从现有 VHD 创建 VM:预览门户

    现在有人知道如何在新的 Azure 门户中从现有 VHD 创建 VM 吗 我可以在manage windowsazure com 中找到很多有关如何执行此操作的信息 但在portal azure com 中没有找到任何有关此功能的信息 从字
  • PendingIntent 启动和停止服务

    我正在尝试制作一个简单的小部件 其中带有一个启动按钮Service与OnClickPendingIntent 我可以很好地启动它 但我无法找到阻止它的方法 我知道我可以用BroadcastReceiver或类似的东西 但我想避免硬编码 这是
  • 如何将快照文件转换为任何其他格式?

    有没有办法将 Sql Server 快照 文件 ss 文件 转换为其他格式 例如 xml xls 或 txt 等 Thanks 快照文件是稀疏文件 http msdn microsoft com en us library aa365564
  • 理解 iOS Swift 2 中的随机数

    如何使程序中的随机数随着时间的推移而不断变化 即每次我想使用它时都成为范围内的新随机数 我很困惑 我已经阅读了 20 多篇关于如何用这种语言生成随机数的不同帖子和文章 我对此还很陌生 但我似乎无法让它发挥作用 我基本上是想从 1 0 3 0
  • 头文件之间的循环依赖

    我正在尝试实现一个包含两个类的树状结构 Tree and Node 问题是 我想从每个类调用另一个类的函数 因此简单的前向声明是不够的 让我们看一个例子 Tree h ifndef TREE 20100118 define TREE 201
  • 如何将附加参数传递给 jQuery DataTable ajax 调用?

    加载 jQuery DataTable 时 我有如下所示的代码 如何向 AJAX 调用传递附加参数 下面的问题和答案中建议的 fnServerParams 回调不起作用 也就是说 天真地使用aodata push 结果是 push is u
  • 用c#在服务器上写入XML值

    我正在尝试将值更新为 xml 文件上的标记 我使用 xmlDoc Save URLString 在本地它可以工作 但是如果我从服务器读取文件 我会收到错误 URI 不可能 服务器上的文件和文件夹权限设置为 777 None
  • 如何正确启用/禁用Flutter的Button

    经研究 当 onPressed 为 null 时 Flutter 的 Button 会自动禁用 然而 由于我必要的测试功能 我被迫放置一个箭头函数 gt 它似乎不会触发 onPressed 实际上为 null 而是返回 null 作为值 因
  • ANR(强制关闭/等待),同时生成足够大的列表

    我正在创建一种文件资源管理器 其中如果将任何应用程序文件复制到手机 SD 卡 我将在带有对话框主题的活动中向用户显示它 对于复制的每个新 app apk 我都会将应用程序的名称和位置附加到对话框中 并且列表是可滚动的 我的问题是 如果我一次
  • 使用 Fast API 接收图像,使用 cv2 处理然后返回

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