python大佬手把手教你60行代码制作好玩的视频转字符画效果,赶快来试试吧!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

昨晚一朋友跟我说在网上看到了别人做的视频转字符动画,觉得很厉害,我于是也打算玩玩。今天中午花时间实现了这样一个小玩意。

顺便把过程记录在这里。

效果

先上效果,来点动力:

源视频: BadApple.mp4

转换后:

步骤:

将视频转化为一帧一帧的图片

把图片转化为字符画

按顺序播放字符画

准备

1. 模块

这个程序需要用到这样几个模块:

opencv-python # 用来读取视频和图片

numpy # opencv-python 依赖于它

准备阶段,首先安装依赖:

pip3 install numpy opencv-python

然后新建python代码文档,在开头添加上下面的导入语句

#-*- coding:utf-8 -*-import numpy as np

2. 材料

材料就是需要转换的视频文件了,我这里用的是BadApple.mp4,下载下来和代码放到同一目录下

你也可以换成自己的,建议是学习时尽量选个短一点的视频,几十秒就行了,不然调试起来很痛苦。(或者自己稍微修改一下函数,只转换一定数量的帧。)

此外,要选择黑白分明的视频。否则的话,就需要彩色字符才能有足够好的表现,有时间我试试。

关于怎么快速学python,有什么方法,这个问题,想必大家都已经心中有数了,打算深入了解这个行业的朋友,可以加下小编的python学习裙:588+090+942,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的python资料和0基础入门教程,欢迎初学和进阶中的小伙伴。

每天晚上20:00我都会开直播给大家分享python学习知识和路线方法,群里会不定期更新最新的教程和学习方法(进群送2018python学习教程),大家都是学习python的,或是转行,或是大学生,还有工作中想提升自己能力的python党,如果你是正在学习python的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

1. 按帧读取视频

现在继续添加代码,实现第一步:按帧读取视频。

下面这个函数,接受视频路径和字符视频的尺寸信息,返回一个img列表,其中的img是尺寸都为指定大小的灰度图。

写完后可以写个main方法测试一下,像这样:

如果运行没报错,就没问题

代码里的注释应该写得很清晰了,继续下一步。

2. 图像转化为字符画

视频转换成了图像,这一步便是把图像转换成字符画

下面这个函数,接受一个img对象为参数,返回对应的字符画。

上面的函数只接受一帧为参数,一次只转换一帧,可我们需要的是转换所有的帧,所以就再把它包装一下:

没报错的话,就可以下一步了。(这一步比较慢,测试阶段建议用短一点的视频,或者稍微改一下,只处理前30秒之类的)

3. 播放字符视频

P.S. 开头已经说明了, curses 只支持 类 unix 系统.

写了这么多代码,现在终于要出成果了。现在就是最激动人心的一步:播放字符画了

同样的,我把它封装成了一个函数。下面这个函数接受一个字符画的列表

好,接下来就是见证奇迹的时刻

不过开始前要注意,字符画的播放必须在shell窗口下运行,在pycharm里运行会看到一堆无意义字符。另外播放前要先最大化shell窗口

写完后,开个shell,最大化窗口,然后键入(文件名换成你的)

python3 video2chars.py

可能要等很久。我使用示例视频大概需要一分钟左右。看到提示的时候,按回车,开始播放!

这样就完成了视频到字符动画的转换, 除去注释, 大概七十行代码的样子. 稍微超出了点预期, 不过效果真是挺棒的.

4. 进一步优化

到了这里,核心功能基本都完成了。

不过仔细想想,其实还有很多可以做的:

每次转换都要很久的时间,能不能边转换边播放?或者转换后把数据保存起来,下次播放时,就直接读缓存。

为啥我的字符动画没有声音,看无声电影么?

能不能用彩色字符?

Python可以做什么?

web开发和 爬虫是比较适合 零基础的

自动化运维 运维开发 和 自动化测试 是适合 已经在做运维和测试的人员

大数据 数据分析 这方面 是很需要专业的 专业性相对而言比较强

科学计算 一般都是科研人员 在用

机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180526A0ZVOH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券