最近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 = 35def 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_factorrender_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()
欢迎加好友打赏