如何用Python做一个骚气的程序员

转载 2018年04月17日 00:00:00

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

编程狗编程大牛技术分享平台640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


640?wx_fmt=png&wxfrom=5&wx_lazy=1

前言

程序员在人们的映像中是一个高智商但同时又很呆板的一个形象。今天我就教如何大家骚起来,可以说学会今天的教程,发到朋友圈,非常的酷。今天教给大家 python3 一个程序,用来读取一个 mp4 格式的视频,并以终端的形式输出。最后呈现的效果,真的相当的骚气。我们可以先看下最后的视频效果。


前期准备

这个程序有 3 个代码文件:getIamge.py、image2txt,py、play.py,两个存放图片和文本的文件夹,以及一个 mp4 视频。在运行之前首先要确定你是否已经安装了 PIL 与 numpy 第三方库,以及 ffmpeg 插件。

640?wx_fmt=png

项目文件结构

PIL 和 numpy 可以通过 pip 来安装。而 ffmpeg 可以去官网下载(https://www.ffmpeg.org/download.html#build-windows)。打开官网对应你的系统,点击下面的图标,去下载。

640?wx_fmt=png

ffmpeg 安装


安装好 ffmpeg,在配置下环境变量:右击我的电脑-属性-高级系统设置-环境变量-Path,加上「;d:\ffmpeg\bin」(你自己的安装路径)即可。

getImage.py

所需的第三库和 ffmpeg 安装好以后,就可以开始运行 python 代码。首先运行的是 getImage.py。getImage.py 是用于从视频中提取帧图片,提取的帧图片存放于「images/」文件夹,若文件夹中已存在帧图片可不运行该程序。若要调整每帧图片数可调整变量 crop_time 累加的数值,清空已存在的图片集,修改视频路径「videoPath」、帧图片目录路径「imagePath」,再运行 getImage.py。

getImage.py 代码:

import os
def getImage(videoPath, imagePath):
   img_count = 1
   crop_time = 0.0
   while crop_time <= 15.0:
       os.system('ffmpeg -i %s -f image2 -ss %s -vframes 1 %s.png' % (videoPath, str(crop_time), imagePath + str(img_count)))
       img_count += 1
       print('Geting Image ' + str(img_count) + '.png' + ' from time ' + str(crop_time))
       crop_time += 0.1
   print('Image Collected')
if __name__ == '__main__':
   videoPath = 'E:/badapple/a/1.mp4'
   imagePath = 'E:/badapple/a/images/'
   getImage(videoPath, imagePath)

image2txt.py

image2txt.py 用于将图片转化为一定尺寸的字符画,从「images/」文件夹中提取图片并转化为 txt 文本存放于「txt/」文件夹。默认要求的终端尺寸为 100x50 ,若屏幕不能支持该大小,可以将参数 charWidth 修改为自定义的每行显示字符数,调整后若运行 play.py 要求终端大小为 (charWidth)x(charWidth/2) 。参数值具体多少,没有一个固定的值,可以自己多尝试下。

注意:这个文件单独运行是没有任何反应的,因为在这个文件中只是定义了 getImage 函数,并没有去调用。具体的调用是在「play.py」中。

代码:

from PIL import Image
import numpy
def image2txt(inputFile, outputFile):
   im = Image.open(inputFile).convert('L')
   charWidth = 100
   im = im.resize((charWidth, charWidth // 2))
   target_width, target_height = im.size
   data = numpy.array(im)[:target_height, :target_width]
   f = open(outputFile, 'w',encoding='utf-8')
   for row in data:
       for pixel in row:
           if pixel > 127:
               f.write('1')
           else:
               f.write(' ')
       f.write('\n')
   f.close()

play.py

「play.py」用于获取 txt 文本集与依次显示 txt 文本集,以达到在终端播放字符动画的效果。运行之前请修改视频目录「videoPath」、txt 文件夹目录「txt_dir_path」、images 文件夹目录「img_dir_path」。然后运行 play.py。

注意:如果你是苹果系统,那你还需要把代码中的「type」改成「cat」,window 的就不用改。即:

os.system('cat ' + txtPath + str(txt_count) + '.txt')


赞赏作者

640?wx_fmt=jpeg


作者:痴海,知识与认知,财富与思维。分享 Python 知识,分享认知。

最近热门文章

用Python分析苹果公司股价数据

Nginx+uwsgi部署Django应用

用文本挖掘剖析近5万首《全唐诗》

Python自然语言处理分析倚天屠龙记

Python 3.6实现单博主微博文本、图片及热评爬取

640?wx_fmt=jpeg

▼ 点击下方阅读原文免费成为社区会员

Python实现一个简单的购物车逻辑

#实现一个购物车的功能  ''''' 1.可以向购物车中添加商品,可以设定数量 2.可以删除购物车中的商品,包括减少数量 3.允许清空购物车 4.每次操作玩,重新统计商品总金额(订单总额 = 商品单价...
  • qq_20412595
  • qq_20412595
  • 2018-04-08 16:39:42
  • 8

Python之做一个网页(学习笔记)

代码如下: The blah Home Site ...
  • Dora_qiqi
  • Dora_qiqi
  • 2016-11-19 20:28:16
  • 211

用python写个类似浏览器的下载器,超简单的

以前没有学习python时,想要下载一个网上的文件,就只能把浏览器打来,找到文件的下载链接,将地址放进去。现在学了python后,才发现,原来下载一个东西是十分简单的。举个例子吧。我们来看这张图片和它...
  • qq_41766361
  • qq_41766361
  • 2018-03-04 08:43:11
  • 181

工作时候自己写的一个用户采集python

import pam ie=pam.PAMIE() def getname(a): fno=a.find('名字')+13 a=a[fno:fno+30] a=a[:a.f...
  • yatere
  • yatere
  • 2012-01-30 19:52:39
  • 771

如何用Jmeter做一个完整性能测试

  • 2017年06月30日 16:30
  • 2.55MB
  • 下载

Python如何搭建一个web app

点击打开链接https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014321709...
  • qq_21395195
  • qq_21395195
  • 2018-03-18 15:52:06
  • 38

51单片机电子日历

  • 2014年01月18日 17:32
  • 67KB
  • 下载

如何用C#做一个悬浮窗口程序.pdf

  • 2011年04月08日 15:04
  • 157KB
  • 下载

利用Python做工具-2

前面用Python做了中文提取工具,现在再做一个复制文件的小工具,比较记录如下: 需求描述: 要求再一个固定的文件夹下不断的生成一些固定文件名的文件,供主程序去操作,给主程序进行压力测试。 需求解析:...
  • JohnnyHu90
  • JohnnyHu90
  • 2015-05-07 09:10:52
  • 892

java程序员的python之路(模块)

模块python可以通过python解释器来进行编程,也就是编写一些小程序。当编写大程序的时候,我们就会把我们的代码定义到.py文件中。这个文件就被成为模块。模块就是包含所有你定义的函数和变量的文件。...
  • maosijunzi
  • maosijunzi
  • 2017-07-14 15:45:27
  • 430
收藏助手
不良信息举报
您举报文章:如何用Python做一个骚气的程序员
举报原因:
原因补充:

(最多只允许输入30个字)