当前位置: 首页 > article >正文

DeOldify 接口化改造 集成 Flask

类似的图片修复项目 GFPGAN 的改造见我另一篇文
https://blog.csdn.net/weixin_43074462/article/details/132497146

DeOldify 是一款开源软件,用于给黑白照片或视频上色,效果还不错。

安装部署教程请参考别的文章,本文基于你给项目跑通,并 pip 集成过 flask 后

本修改支持加载一次模型,持续提供 HTTP 服务

在根目录新建主文件 run_serv.py

import io

from deoldify import device
from deoldify.device_id import DeviceId
from deoldify.visualize import *
from flask import Flask, request, Response

app = Flask(__name__)

# 提取通用代码
# choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)
plt.style.use('dark_background')
colorizer = get_image_colorizer(artistic=True)
torch.backends.cudnn.benchmark = True


@app.route('/action', methods=['POST', 'GET'])
def action():
    file = request.files['file']
    img_name = file.filename
    _, ext = os.path.splitext(img_name)
    img_in_memory = io.BytesIO(file.read())

	#此处的35应该是种子而不是参数 可以改成25或者什么的,影响似乎不大
    img_ret = colorizer.get_transformed_image_pzj(img_in_memory, 35)
    # colorizer.plot_transformed_image(path='C:/Users/PiaoZhenJia/Pictures/微信图片_20230728194252.png',
    #                                  render_factor=35, results_dir=Path('D:/'), post_process=False, watermarked=False)

    img_ret_bytes = io.BytesIO()
    img_ret.save(img_ret_bytes, format='PNG')
    img_ret_bytes.seek(0)
    res = Response(img_ret_bytes)
    res.headers.add('Content-Type', 'image/' + ext)
    res.headers.add('Content-Disposition', f'attachment; filename=colorize_{img_name}')
    return res

def main():
    app.run(port=2021, host="127.0.0.1", debug=False)


if __name__ == '__main__':
    main()

然后修改 visualize.py 我选择在187行附近加入这个函数

    def get_transformed_image_pzj(
            self, img_bytes: io.BytesIO, render_factor: int = None
    ) -> Image:
        self._clean_mem()
        orig_image = PIL.Image.open(img_bytes)
        filtered_image = self.filter.filter(
            orig_image, orig_image, render_factor=render_factor
        )

        return filtered_image

测试方法如图

在这里插入图片描述

接受一个form表单,file字段传输二进制图片文件,返回结果直接为二进制图片。可以通过 PostMan 的 SaveResponse 保存到一个 PNG 文件


http://www.kler.cn/news/108810.html

相关文章:

  • STM32:串口轮询模式、中断模式、DMA模式和接收不定长数据
  • git 推送到github远程仓库细节处理(全网最良心)
  • matlab中narginchk函数用法及其举例
  • FPGA_状态机工作原理
  • 前端小技巧: TS实现new出一个对象的内部过程
  • 独创改进 | RT-DETR 引入 Asymptotic Hybrid Encoder | 渐进混合特征解码结构
  • maven环境变量,安装源,本地仓库配置
  • STM32F10xx 存储器和总线架构
  • Redisson的看门狗策略——保障Redis数据安全与稳定的机制
  • Spring-声明式事务
  • 解决visual studio Just-In-Time Debugger调试
  • 论文写作框架示例:论软件系统建模方法及其应用
  • YouTube博主数据信息资源
  • JS中Map对象与object的区别
  • pythonWeb主流框架分析
  • css-表格样式
  • 【Java 进阶篇】解决Java Web应用中请求参数中文乱码问题
  • Python Wordcloud报错:Only supported for TrueType fonts,多种解决方案
  • 97. 交错字符串
  • Go学习第十二章——Go反射与TCP编程
  • 如何使用drawio画流程图以及导入导出
  • 微服务parent工程和子工程pom文件配置注意
  • 基于Qt 文本读写(QFile/QTextStream/QDataStream)实现
  • C++编程题目------平面上的最接近点对(分治算法)
  • C++设计模式_13_Flyweight享元模式
  • 漏洞复现-showdoc文件上传_v2.8.3_(CNVD-2020-26585)
  • Python环境下LaTeX数学公式转图像方案调研与探讨
  • 【大数据Hive】hive 表数据优化使用详解
  • 西工大CSAPP第二章课后题2.55答案及解析
  • 什么是程序化交易