导航菜单
首页 » 问答 » 正文

找到商机了,听说修复老照片赚了一套房?Python带你实现老旧照片修复。

前言

前段时间刷朋友圈,看到有这样一则消息:意思就是老旧照片修复,简单的五块,破旧的十块!我寻思着这也能赚钱?直到我看到这样的一张图片:

我才明白为啥会有人花钱去修复这些照片,在他们眼里别说五块,五十,五百也会去花,那毕竟是很多人最后能留下想念的东西,话说当你老了,难道不想看看年轻时的自己?当然在我们现在手机照片,各种照片都能找到,当时间倒退十五年,那时候就知道照片的珍贵性了!废话不多讲!直接上干货!

需用到的工具

.7.8

自带的一些模块

模块;

由于涉及到算法问题,这里就不详细给大家介绍了,不然得五千字论文了!

简单截张图说明一下图像修复,也就是所谓的Image 是在干嘛吧。比如有一张打了马赛克的图片:

用了图像修复算法之后,图像就可以恢复成这样啦:

是不是很神奇,感觉很有趣,很想玩呢~这里我们就教大家如何借助现有的开源代码来实现这一功能。首先,我们去上搜索一下这些文章,看看有没有人复现过,这里我们采用mmlab那边复现的算法模型!

代码仓库如下:

https://github.com/open-mmlab/mmediting

运行该仓库所需要依赖的环境如下:

​​​​​​​
Linux (Windows is not officially supported)
Python 3.6+
PyTorch 1.3 or higher
CUDA 9.0 or higher
NCCL 2
GCC 4.9 or higher
mmcv

安装该库的命令如下:

python3 setup.py develop

安装完之后,我们还需要下载repo上的模型,例如:

https://download.openmmlab.com/mmediting/inpainting/deepfillv1/deepfillv1_256x256_8x2_places_20200619-c00a0e21.pth找到商机了,听说修复老照片赚了一套房?Python带你实现老旧照片修复。_PythonJavaPHP的博客-CSDN博客https://download.openmmlab.com/mmediting/inpainting/deepfillv1/deepfillv1_256x256_8x2_places_20200619-c00a0e21.pth

下载完之后,我们就可以简单地写个脚本测试一下啦:

'''
Function:
    图像修复
关注公众号:加Q群:739021630  获取代码以及上百本电子书
'''
import os
import cv2
import mmcv
import time
import torch
import argparse
import numpy as np
from mmedit.core import tensor2img
from mmedit.apis import init_model, inpainting_inference
 
 
'''parse args in command lines'''
def parseArgs():
    parser = argparse.ArgumentParser(description='Inpainting demo')
    parser.add_argument('--imagepath', dest='imagepath', help='path to input image file.', default='test.jpg', type=str)
    parser.add_argument('--outputpath', dest='outputpath', help='path to save inpainting result.', default='output.jpg', type=str)
    args = parser.parse_args()
    return args
 
 
'''inpainting image'''
def inpainting(masked_img_path, mask_path, savepath):
    configpath = 'mmediting/configs/inpainting/deepfillv2/deepfillv2_256x256_8x2_celeba.py'
    checkpointpath = 'deepfillv2_256x256_8x2_celeba_20200619-c96e5f12.pth'
    inpainting_model = init_model(configpath, checkpointpath, device=torch.device('cuda', 0))
    result = inpainting_inference(inpainting_model, masked_img_path, mask_path)
    result = tensor2img(result, min_max=(-1, 1))[..., ::-1]
    mmcv.imwrite(result, savepath)
 
 
'''run'''
if __name__ == '__main__':
    args = parseArgs()
    image = cv2.imread(args.imagepath)
    roi = cv2.selectROI(image, False)
    mask = image.copy()
    mask[:] = 0
    mask[roi[1]: roi[1] + roi[3], roi[0]: roi[0] + roi[2], :] = np.array((255, 255, 255))
    maskpath = f'mask_{int(time.time())}.png'
    cv2.imwrite(maskpath, mask)
    inpainting(masked_img_path=args.imagepath, mask_path=maskpath, savepath=args.outputpath)

输入图像:

输出图像:

神奇不神奇?想不想学?

效果展示

在终端运行如下命令即可:

python3 inpainting.py --imagepath 待修复图像路径 --outputpath 修复结果保存路径

懒得录屏了,随便表演个抹酒窝之术吧。

原始图像:

打马:

修复:

评论(0)

二维码