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开发和 爬虫是比较适合 零基础的
自动化运维 运维开发 和 自动化测试 是适合 已经在做运维和测试的人员
大数据 数据分析 这方面 是很需要专业的 专业性相对而言比较强
科学计算 一般都是科研人员 在用
机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大
领取专属 10元无门槛券
私享最新 技术干货