借助deepseek完成python的Deoldfiy黑白照着色工具

最近deepseek火热,试试看能否协助完成制作一款工具,用于给黑白照片着色。

 

打开deepseek,注册完后,输入需求,给我推荐了deoldify,制作过程总结为以下几步:

1. Python环境搭建直接忽略

2.Deoldfiy依赖库下载安装,训练模型models下载(需要梯子)

 

 

3. 运行查看效果

 

 

 

代码执行会报错,只需要根据报错提示修改即可:

大概意思就是torch.load会有安全问题,需要把默认的权重值改为false

 

 

 

运行效果:

 

 

 

 4. windows界面代码

使用tkinter,只需要一个滑动条用于调整渲染因子,一个按钮用于获取输入图片的路径,运行后在图片路径生成着色好的图片,界面是这个样子:

 

 

 5. 打包成windows可执行工具

刚开始使用Pyinstller,但是执行后运行出错,不想去检查,直接更换为Nuitka,虽然打包时间耗时,但是最终的exe可以执行,需要注意的是,models文件夹也要一同加入到exe的同一个路径下。

 执行命令:nuitka --standalone --onefile --enable-plugin=tk-inter C:\Users\6855ufs\Desktop\deepseek\transfer_photo. py

 

6. 源码展示

import os
from deoldify import device
from deoldify.device_id import DeviceId
# from deoldify.visualize import get_image_colorizer
from deoldify.visualize import *

import tkinter  # 用于绘图
from tkinter.filedialog import askdirectory, askopenfilename  # 获取文件目录,文件夹目录

render_factor = 35


def run_main():
    print("get_argument")
    input_file_path = askopenfilename()
    print(input_file_path)
    output_file_path = input_file_path.replace('.jpg', '-fix.jpg')
    print(output_file_path)
    print("songsong ready 1111")

    # 设置设备(GPU 或 CPU)
    device.set(device=DeviceId.CPU)  # 如果有 GPU,使用 GPU0;否则使用 CPU

    # torch.serialization.add_safe_globals([partial])
    print("songsong ready 2222")
    # 初始化 DeOldify 模型
    colorizer = get_image_colorizer(artistic=True)
    print("songsong ready 3333")
    # 输入和输出路径
    input_image_path = input_file_path  # 'C:\\Users\\6855ufs\\Desktop\\deepseek\\1.jpg'  # 替换为你的老照片路径
    output_image_path = output_file_path  # 'C:\\Users\\6855ufs\\Desktop\\deepseek\\2.jpg'  # 替换为输出路径

    # 为照片上色
    try:
        # 渲染因子(render_factor)控制上色的细节程度,值越大细节越多
        # render_factor = 35  # 可以尝试调整这个值(范围 10-40)

        print("factor is ")
        print(type(render_factor))
        print(render_factor)
        result = colorizer.get_transformed_image(
            path=input_image_path,
            render_factor=render_factor,
            watermarked=False
        )

        # 保存上色后的照片
        result.save(output_image_path)
        print(f"上色完成!结果已保存到: {output_image_path}")

    except Exception as e:
        print(f"上色失败: {str(e)}")

    l1 = tkinter.Label(window, text=output_file_path + ' is generate')
    l1.pack()


def on_scale_change(value):
    print(f"渲染因子:{value}")
    global render_factor
    render_factor = int(value)


window = tkinter.Tk()
window.title('photo-add-color')
window.geometry('500x360')

scale = tkinter.Scale(window, from_=10, to=40, orient=tkinter.HORIZONTAL, label="渲染因子", command=on_scale_change)
scale.pack()

b1 = tkinter.Button(window, text="打开图片并运行", command=run_main)
b1.pack()

window.mainloop()

 

 

 exe工具和源码下载链接:

 

通过网盘分享的文件:deoldify-tool.zip
链接: https://pan.baidu.com/s/1QLnxS4KRiGNuUw2JEAoKFg?pwd=cjpf 提取码: cjpf

 

欢迎加v好友(zsy551864489)打赏

 

posted @ 2025-02-06 10:55  啊源股  阅读(234)  评论(0)    收藏  举报