基于寒武纪,用style_transfer风格转化蔡徐坤打篮球的视频

1、将视频转化成图片

视频是在B站下载的FLV格式的,然后我采用网上找的python代码将视频转成了1078张图片。

在这里插入图片描述
在这里插入图片描述

2、处理图片
因为老师给的代码一次只能处理一张图片,且处理后的图片名固定为st.jpg,而且貌似不太方便将输入时的文件名在输出时读出来,所以我想法是直接他输出的文件名为随机的,这样一来不会导致覆盖,二来可以通过生成文件的时间戳来进行排序。

后来我探索了几种方法,以下是总结的两种。嫌麻烦的话,可以直接看2.2, 2.1是在硬件上做的,出的问题比较多比较麻烦。

2.1、方法一
看了给的源码,我改了src下面的post_processor.cpp中的代码。使其输出的文件名不唯一,是随机的字符串,输出文件统一放到一个out文件夹下,这个out文件夹需要手动创建,与src文件夹同级。

以下是部分截图 :

在这里插入图片描述

4.PNG

5.PNG

6.PNG

7.PNG

修改完post_processor.cpp后,在服务器端进入Cambricon-Test文件夹,设置环境,X86貌似不用设置,但是ARM的话,一定要设置,不然make代码的时候,会报错。

cd Cambricon-Test

source env.sh

经过环境设置后,然后进入style_transfer_x86/build文件夹,命令行输入

cmake …

make

编译完成后,就可以让输出的图片名是随机的了。然后我们再去改run_style_transfer.sh,让他可以处理多个图片,这里我是重新创建了一个1.sh文件。

8.PNG

改完之后,连上寒武纪的ARM板子,处理:

ping 10.100.8.234

telnet 10.100.8.234

mount -t nfs -o tcp,nolock 10.100.8.235:/opt/Cambricon/nfs /NFS

cd NFS

export LD_LIBRARY_PATH=/NFS/lib32

cd style_transfer_arm/

sh 1.sh

运行结束后,就可以在out文件夹下看到1478张处理后的图片,但是文件夹里面的文件名都是随机的、混乱的,所以我们要按照他们生成的时间戳来对其排序,在out文件夹创建一个operation.sh

9.PNG

然后打开终端,cd 到out文件夹下,然后输入

sh operation.sh

稍等片刻,就处理完了,图片名全部成了生成时的字符串。

然后将out文件夹,复制出虚拟机,放到电脑桌面,然后全选所有图片,再按空格,再用鼠标左键点击文件夹空白处,所有的图片就会按照顺序排列。

10.PNG

2.2、处理图片
上面方法我试了不下十次,花了两天,结果不是板子上报错,就是处理的图片没有1478张,所以,我后来选择在服务器上操作了。

换了一个思路,改文件名的方法老是出各种问题,导致出来的图片数量没那么多。于是,我想到了直接写一个shell,在每次程序出一个st.jpg图片之后,就马上将那个图片重名为输入的名。

首先,在src同级目录下,新建一个out文件夹,放处理后的图片,然后新建一个1.sh

代码如下:

12.PNG

然后在服务器端,

sh 1.sh

就在out处获得了处理后的图片,我还让处理的结果输入到1.text,看是否有漏掉的。

3、做成视频
我是用AE做成视频的,所以这里说下流程,其他软件流程应该是相似的。

打开AE后,点击文件,导入,多个文件,然后选择 JPEG序列 ,然后得到序列后,将序列从项目框下,拖动到合成的那个轨道上,然后导入最初的FLV视频,放到视频轨道上,关闭视频,打开音频。

我们发现原视频是59:04,但是图片序列只有49:08,所以需要将图片序列的时间等比增加,故点击合成框的左下角的 {} 符号,然后合成框会多一个持续时间、伸缩,然后点击持续时间,会弹出一个框,将里面的49:08改成59:04。

接着点击顶部菜单栏中的合成,点击 添加到渲染队列,然后在下方会看到一个渲染队列框。这里点击渲染,就可以得到视频了,但是这样输出的视频很大,有一个多G,所以需要让输出的视频很小。

点击输出模块对应的 无损 ,然后将格式改为QuickTime,然后点击右边的 格式选项,将视频编解码器,设置为H.264,然后确定,渲染,就可以得到想要的视频啦。

具体操作图如下:

13.png

15.png

16.png

17.png

18.png

19.png

20.png

21.png

4、视频结果

23.png

欢迎大家去点赞、评论、收藏。

https://www.bilibili.com/video/av53303275/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值