ITPub博客

首页 > 数据库 > 数据库开发技术 > 《舞蹈生》《披荆斩棘的哥哥》跳舞视频——转字符画

《舞蹈生》《披荆斩棘的哥哥》跳舞视频——转字符画

原创 数据库开发技术 作者:阿黎逸阳的代码 时间:2021-08-29 08:00:00 0 删除 编辑
最近微博中《舞蹈生》和《披荆斩棘的哥哥》各种花式上热搜。

正好周末休息可以把跳舞视频转成对应的字符画,熟悉一下python的视频处理技巧。

感兴趣的小伙伴,来看看她/他们优雅和帅气的表演吧。欢迎大家指正并改进文章中的不足喔。
本文目录
  1. 效果展示

    1.1《舞蹈生》金晨舞蹈秀

    1.2《披荆斩棘的哥哥》群舞

    1.3《披荆斩棘的哥哥》张晋独舞

  2. VideoWriter函数语法展示

  3. python生成字符画分模块讲解

    3.1 把图片合成视频

    3.2 在视频中加入音频

    3.3 在指定目录下生成新的文件夹


一、效果展示

在正式进入代码讲解之前,先来看下本文的实现效果。

 1   《舞蹈生》金晨舞蹈秀



 2  《披荆斩棘的哥哥》群舞




 3  《披荆斩棘的哥哥》张晋独舞



二、VideoWriter函数语法展示

为了大家更好地理解后续代码,把本文用到比较重要的函数在本小节展示。

大家可以先看看把图片添加到视频中去的函数VideoWriter,具体释义如下:

VideoWriter(filename, fourcc, fps, frameSize[, isColor])
filename:要保存的文件路径。
fourcc:指定编码器。
fps:要保存的视频帧率。
frameSize:要保存的文件的画面尺寸。
isColor:黑白画面还是彩色画面。
接下来正式进入生成字符画分模块讲解。


三、python生成字符画分模块讲解

本文整体思路是:把原始跳舞视频按固定的帧转成图片——把图片中的像素替换成你想替换的字符——把替换后的图片合成视频——把视频加上背景音乐。

把图片中的像素替换成你想替换的字符在带音乐字符画+带颜色字符画—情人节表白代码一文中已进行讲述,本文不再赘述。

接下来重点把后面3部分进行梳理展示。

 1   把图片合并成视频

首先定义一个图片转视频的函数,应用VideoWriter把字符图片拼接到一个视频中去。

#图片转视频import osimport cv2import numpy as npfrom PIL import Image
def pic2video(pic_path, vid_path): ''' 此函数是把图片合并成视频 pic_path:存储图片的文件路径 vid_path:由存储图片生成的视频文件路径 ''' fps = 25 for i in os.listdir(pic_path): os.chdir(pic_path) im =Image.open(i) size = im.size break vid_w = cv2.VideoWriter(vid_path, cv2.VideoWriter_fourcc(*'XVID'), fps, size) for i in os.listdir(pic_path): img = cv2.imread(i) vid_w.write(img) vid_w.release() print("==========视频制作已完成===========")
pic2video函数使用时需注意:fps中的帧需和原始视频一致,或需在原始图片转字符图片再加载成视频时两者保持一致,才能和后面音频文件拼接时是同步的。
为确定fps的值,可以点击原视频——按右键——点击属性——点击详细信息,即可得到类似如下图片的信息,其中帧速率即为所找的值。

接下来调用pic2vidoe函数把字符图片合并成视频,具体语句如下:
pic_path = r"F:\公众号\39.舞蹈生\video_to_str_png"vid_path = r"F:\公众号\39.舞蹈生\pic_to_video" + '\\' + 'pic_to_vidoe.mp4'pic2video(pic_path, vid_path)

即可在F:\公众号\39.舞蹈生\pic_to_video文件夹中生成pic_to_vidoe.mp4文件。

你可以根据自己电脑中的存放目录进行修改,比如先在F盘中依次建F:\公众号\39.舞蹈生文件夹,把原始视频放到该目录。

再在该目录下生成video_to_str_png和pic_to_video两个文件夹,并运行代码。

 2   在视频中加入音频

接下来把原始视频中的音乐和pic_to_vidoe.mp4文件进行合并,生成第一小节中的效果展示视频。

合并函数为comp_mvid,具体语句如下:

#音频和视频合成import osfrom moviepy.editor import CompositeAudioClip, VideoFileClip, AudioFileClip
def comp_mvid(video_path, music_path, comp_path): ''' 此函数是为视频配背景音乐 video_path:视频地址 music_path:音频地址 comp_path:合成的视频地址| ''' video_path = video_path #视频文件 video = VideoFileClip(video_path) videos = video.set_audio(AudioFileClip(music_path)) #音频文件 videos.write_videofile(comp_path, audio_codec='aac') #保存合成视频,注意加上参数audio_codec='aac',否则音频无声音
注:如需本文代码和视频文件自己尝试运行的小伙伴可以到公众号中回复”舞蹈字符画“即可免费获取。
接下来调用comp_mvid函数把音乐和pic_to_vidoe.mp4视频进行合并,具体语句如下:
vid_path = r'F:\公众号\39.舞蹈生\pic_to_video' + '\\' + 'pic_to_vidoe.mp4' #视频文件music_path = r'F:\公众号\39.舞蹈生' + '\\' + 'video1.mp4'comp_path = r'F:\公众号\39.舞蹈生\pic_to_video' + '\\' + 'compose1.mp4'comp_mvid(vid_path, music_path, comp_path)
如果运行成功,python中会有如下提示:

即可生成第一小节中的效果展示视频。
如果你在尝试该代码,文件目录都要替换成你电脑中的目录,请悉知。


 3   在指定目录下生成新的文件夹

最后把该文代码中在其它项目也常用的一个python小技巧单独拿出来分享一下。

我们可能在当前python工作目录中要新建一个文件夹。

比如文件夹的名称为video_to_str_png,你可以在代码中运行如下语句即可生成。

File_Path = os.getcwd() + '\\' + 'video_to_str_png\\'if not os.path.exists(File_Path):    os.makedirs(File_Path)
至此,《舞蹈生》和《披荆斩棘的哥哥》字符画生成已讲解完毕,代码还有优化空间,感兴趣的朋友自己实现优化一遍吧。
参考文献
https://zhuanlan.zhihu.com/p/144256746https://www.yisu.com/zixun/321264.htmlhttps://https://www.jb51.net/article/155379.htmhttps://blog.csdn.net/qq_29726359/article/details/86774759https://blog.csdn.net/weixin_42486139/article/details/114660850https://haokan.baidu.com/web/search/page?query=%E6%8A%AB%E8%8D%86%E6%96%A9%E6%A3%98%E7%9A%84%E5%93%A5%E5%93%A5%E8%B7%B3%E8%88%9Ehttps://blog.csdn.net/qq_27802435/article/details/82423062?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.base&spm=1001.2101.3001.424
往期回顾:

情人节表白烟花

520表白代码合集
黑客帝国中的代码雨
用python绘制皮卡丘
娱乐圈排行榜动态条形图绘制
Python人脸识别—我的眼里只有你
3D星空图V2版——添加背景图片和音乐


扫一扫关注我

13162366985

投稿微信号、手机号

原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。

上一篇: 墨菲定律
请登录后发表评论 登录
全部评论

注册时间:2020-02-15

  • 博文量
    282
  • 访问量
    130892