魔幻换天视频:
python 代码实现魔幻换天特效
![6e569214b17bdbae6171fe8e2c4b08f4.gif](https://i-blog.csdnimg.cn/blog_migrate/0d77e84fa0a081c3a706deb10b30c8c7.gif)
特效前后对比图
python实现魔幻换天特效,特效前,特效后对比视频
![30784d7696efa742852f775f5e08bf40.gif](https://img-blog.csdnimg.cn/img_convert/30784d7696efa742852f775f5e08bf40.gif)
视频前后特效对比图
前几期的视频,我们分享了python代码实现的魔幻换天的视频特效,如何使用python代码实现?本期文章我们简单介绍一下工作原理。
![0a918ff5c367d332286dbbfde6496bf7.png](https://i-blog.csdnimg.cn/blog_migrate/27723630c550a2cf1db3d6f3ae71efee.jpeg)
视频特效对比前后
首先,需要到如下链接下载整个项目的源码:
github.com/jiupinjia/SkyAR
下载完成后,解压后的文件目录如下:
![3e83b65e8f953d1c619118803d256023.png](https://i-blog.csdnimg.cn/blog_migrate/c135c4eb9835cda53df2dfb044063ad6.jpeg)
源代码目录文件
然后到如下地址下载预训练模型:
drive.google.com/file/d/1COMROzwR4R_7mym6DL9LXhHQlJmJaV0J/view?usp=sharing模型名称:checkpoints_G_coord_resnet50.zip
下载完成后,解压到skyAR的当前目录中,项目中多一个文件夹checkpoints_G_coord_resnet50,目录如下:
![2a811a19c7aef286d0763ed458dac148.png](https://i-blog.csdnimg.cn/blog_migrate/73e11c58feb062a85d5d1789baa9ef59.jpeg)
需要加载预训练模型
然后,需要安装requirement里面要求的第三方工具包:
如下第三方包是项目需要的包,需要安装到自己的电脑里面,否则代码无法运行matplotlibscikit-imagescikit-learnscipynumpytorchtorchvisionopencv-pythonopencv-contrib-python
![648dd6062039f463ee548b03c1726312.png](https://i-blog.csdnimg.cn/blog_migrate/6daf1ef9ef659e3d41cf2eca48854b1f.jpeg)
特效前后对比图
待以上准备工作完成后,便可以简单修改一下源码进行运行代码,这里需要要求你已经安装好了cuda版本的pytorch或者CPU版本的pytorch,若电脑里面没有GPU可以使用,可以直接使用CPU进行代码的运行,代码修改如下:
首先打开skymagic.py文件,更改前代码如下:
import numpy as npimport matplotlib.pyplot as pltimport cv2import osimport globimport argparsefrom networks import *from skyboxengine import *import utilsimport torchdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")parser = argparse.ArgumentParser(description='SKYAR')parser.add_argument('--path', type=str, default='./config/config-canyon-jupiter.json', metavar='str',help='configurations')
![ddd40943a6c7044197121af4e48568f5.png](https://i-blog.csdnimg.cn/blog_migrate/91eecd71fbfd3eea0cc6e595f48799c9.jpeg)
代码截图
更改后代码如下:我们注销了2,12,16-18行的代码,并修改13行代码为device = torch.device( "cpu"),这里修改的意思是使用CPU运行代码,若你电脑上面已经安装好了cuda,可以忽略此处的修改
import numpy as npimport matplotlib.pyplot as pltimport cv2import osimport glob#import argparsefrom networks import *from skyboxengine import *import utilsimport torchdevice = torch.device( "cpu")#parser = argparse.ArgumentParser(description='SKYAR')#parser.add_argument('--path', type=str, default='./config/config-canyon-jupiter.json', metavar='str',# help='configurations')
![0c945148ba39a694e475348f8b080c92.png](https://i-blog.csdnimg.cn/blog_migrate/3d7f6c1dc10f71791d6e93d965731dbd.jpeg)
代码截图
修改完成后,需要修改一下main 函数里面的代码
修改前代码的第188行使用parser来进行配置文件的读取
if __name__ == '__main__': config_path = parser.parse_args().path args = utils.parse_config(config_path) sf = SkyFilter(args) sf.run()
![ef6705caa2695bf324b91d6dc53b02ad.png](https://i-blog.csdnimg.cn/blog_migrate/e473617484ce53f2bad8a1a1d617bd7d.jpeg)
代码截图
修改后,我们可以直接配置config配置文件下的配置文件
if __name__ == '__main__': config_path = 'config/config-canyon-sunset.json' args = utils.parse_config(config_path) sf = SkyFilter(args) sf.run()
![fed4ef33f4497d2557288f023500a954.png](https://i-blog.csdnimg.cn/blog_migrate/a023aa0b90983f57a0e1cd5a5909e10e.jpeg)
代码截图
配置文件如下:{"net_G": "coord_resnet50","ckptdir": "./checkpoints_G_coord_resnet50","input_mode": "video","datadir": "./test_videos/canyon.mp4","skybox": "rainy.jpg","in_size_w": 384,"in_size_h": 384,"out_size_w": 845,"out_size_h": 480,"skybox_cernter_crop": 0.5,"auto_light_matching": false,"relighting_factor": 0.6,"recoloring_factor": 0.5,"halo_effect": true,"output_dir": "./eval_output","save_jpgs": false}
"ckptdir": "./checkpoints_G_coord_resnet50这里是预训练好的模型
"input_mode": "video",这里是输入的格式,当然也可以输入一张照片,照片设置为seq
"datadir": "./test_videos/canyon.mp4",这里是需要处理的视频地址
"skybox": "rainy.jpg",这里是添加特效的图片或者视频
![24deb99b316450ad282ebda0cbfbb1b1.png](https://i-blog.csdnimg.cn/blog_migrate/bb5b4311a8695465b9e5a898b29d919f.jpeg)
代码截图
其他参数可以默认设置
最后,直接在本目录文件夹下cmd对话框中输入:
python skymagic.py
便可以看到模型实时渲染的特效视频,代码运行完成,会在当前目录生成合成后的视频
![34ac667d6e1c2a263e00f78e15232119.png](https://i-blog.csdnimg.cn/blog_migrate/1200315452fd510b3d2f3c34f57adef0.jpeg)
视频特效对比
当然,你也可以使用自己的数据,进行模型的训练,模型的训练使用train.py代码,详细步骤可以参考文章中的链接进行学习,本文只是简单介绍一下代码的基本使用,其中涉及的pytorch人工智能神经网络的搭建,模型的训练等知识,也可以参考往期关于pytorch等方面的知识,后期我们也会分享此方面的知识,关于pytorch不同版本的安装说明,pytorch官网有详细的介绍可以参考
![c63a24c74c637b98f12d09c83d40cbeb.png](https://i-blog.csdnimg.cn/blog_migrate/f447509bb8e84cfc0fee8cafbf134a43.jpeg)
特效视频截图
最后展示几张特效后的照片,有关视频可以查看文章开头的2个视频链接,进行视频的观看
![9544ac90c1aa50ebf33192bc94ce2f02.png](https://i-blog.csdnimg.cn/blog_migrate/e92aa74d7c500b35fdf822098a236497.jpeg)
视频特效
![4600618f8a66de7cd0df6824b8890da9.png](https://i-blog.csdnimg.cn/blog_migrate/c6d984ca4f4cb351852d54b2d6f7a8c5.jpeg)
视频特效